在項(xiàng)目開(kāi)發(fā)中,難免會(huì)遇到使用當(dāng)前時(shí)間,比如實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求上傳報(bào)文、預(yù)約、日歷等功能。
2019.10更新
1. 將時(shí)間戳轉(zhuǎn)換為時(shí)間 (以毫秒為單位)
//參數(shù):時(shí)間戳
//返回值格式:2019-04-19 10:33:35.886
- (NSString *)getTimestamp:(NSString*)mStr{
NSTimeInterval interval =[mStr doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"]];
NSString *dateString = [formatter stringFromDate: date];
NSLog(@"時(shí)間戳對(duì)應(yīng)的時(shí)間是:%@",dateString);
return dateString;
}
2. 獲取當(dāng)前時(shí)間 (以毫秒為單位)
//返回值格式:2019-04-19 10:33:35.886
- (NSString *)getNowTimeTimestamp{
NSDate *datenow = [NSDate date];//現(xiàn)在時(shí)間,你可以輸出來(lái)看下是什么格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"]];
NSString *dateString = [formatter stringFromDate: datenow];
NSLog(@"當(dāng)前時(shí)間戳對(duì)應(yīng)的時(shí)間是:%@",dateString);
return dateString;
}
3. 將時(shí)間轉(zhuǎn)化成 時(shí)間戳
//返回值格式:1555642454396
- (NSInteger)timeSwitchTimestamp:(NSString *)formatTime{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
[formatter setTimeStyle:NSDateFormatterShortStyle];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; //(@"YYYY-MM-dd hh:mm:ss") ----------設(shè)置你想要的格式,hh與HH的區(qū)別:分別表示12小時(shí)制,24小時(shí)制
NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
[formatter setTimeZone:timeZone];
NSDate* date = [formatter dateFromString:formatTime]; //------------將字符串按formatter轉(zhuǎn)成nsdate
//時(shí)間轉(zhuǎn)時(shí)間戳的方法:
NSInteger timeSp = [[NSNumber numberWithDouble:[date timeIntervalSince1970]*1000] integerValue];
NSLog(@"將某個(gè)時(shí)間轉(zhuǎn)化成 時(shí)間戳timeSp:%ld",(long)timeSp); //時(shí)間戳的值
return timeSp;
}
4. 獲取當(dāng)前時(shí)間戳 (以毫秒為單位)
//返回值格式:1555642454396
//這里注意要獲取完全部數(shù)值后在(long)強(qiáng)轉(zhuǎn), 如果(long)[datenow timeIntervalSince1970]*1000 這么寫(xiě)是先強(qiáng)轉(zhuǎn)在*1000,就是秒級(jí)別的數(shù)據(jù)了
- (NSString *)nowTimeSwitchTimestamp{
NSDate *datenow = [NSDate date];//現(xiàn)在時(shí)間
NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
return timeSp;
}
以下文本為最初文本,可做參考
1. 獲取年月日時(shí)分秒
實(shí)現(xiàn)代碼:
NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM-dd hh:mm:ss"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];
str就是我們需要的時(shí)間,代碼中("YYYY-MM-dd HH:mm:ss")這個(gè)時(shí)間的樣式是可以根據(jù)我們的需求進(jìn)行修改的,比如:
20170901112253 ==> ("YYYYMMddHHmmss")
如果只想獲取年月,代碼如下:
NSDate *date1 = [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
[formatter1 setDateStyle:NSDateFormatterMediumStyle];
[formatter1 setTimeStyle:NSDateFormatterShortStyle];
[formatter1 setDateFormat:@"YYYY-MM"];
NSString *DateTime1 = [formatter1 stringFromDate:date1];
2. 區(qū)分系統(tǒng)時(shí)間是24小時(shí)制還是12小時(shí)制
代碼如下:
//獲取系統(tǒng)是24小時(shí)制或者12小時(shí)制
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
NSRange contains = [formatStringForHours rangeOfString:@"a"];
BOOL thisAMPM = contains.location != NSNotFound;
thisAMPM==TURE為12小時(shí)制,否則為24小時(shí)制
3. 字符串轉(zhuǎn)時(shí)間戳
代碼如下:
//字符串轉(zhuǎn)時(shí)間戳
//datenow為當(dāng)前時(shí)間
NSString *timeSp = [NSString stringWithFormat:@"%d", (long)[datenow timeIntervalSince1970]];
//時(shí)間戳的值
NSLog(@"timeSp:%@",timeSp);
4. 時(shí)間戳轉(zhuǎn)字符串
代碼如下:
//時(shí)間戳轉(zhuǎn)字符串
NSString *timeStr = "1506064573";
NSTimeInterval interval=[timeStr doubleValue] / 1000.0;
NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
//實(shí)例化一個(gè)NSDateFormatter對(duì)象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
//設(shè)定時(shí)間格式,這里可以設(shè)置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *currentDateStr = [dateFormatter stringFromDate:date];