APP展示給用戶的時(shí)候,時(shí)間肯定都是以字符串的形式. 服務(wù)器返回的時(shí)間也是以字符串的格式. 但是從服務(wù)器拿回來的時(shí)間一般都需要經(jīng)過一個(gè)轉(zhuǎn)換才能使用.服務(wù)器返回的格式:"162000"或者"2005-07-01 12:00:00 -0700", iOS中需要借助NSDate來處理
時(shí)間的格式化主要2步:
- 從字符串轉(zhuǎn)換成NSDate
- 從NSDate轉(zhuǎn)換成特定格式的字符串
轉(zhuǎn)換的中間需要使用 NSDateFormatter,這個(gè)類專門用來設(shè)置NSDate的格式
1.從字符串轉(zhuǎn)成NSDate
如果服務(wù)器返回的格式是: "162000"
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:162000];
如果服務(wù)器返回的格式是: "2005-07-01 12:00:00 -0700"
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *date = [formatter dateFromString:model.latestTime];
2.從NSDate轉(zhuǎn)換成特定格式的字符串
[formatter stringFromDate:date];
其實(shí)跳到NSDateFormatter這個(gè)類里面去看,并沒有太多的東西
- (NSString *)stringFromDate:(NSDate *)date;
- (nullable NSDate *)dateFromString:(NSString *)string;
看名稱就很明顯能理解函數(shù)的作用了
時(shí)間的格式
常用的幾個(gè)
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
||
|:---:|:---:|
|y|年|
|M|月|
|d|日|
|H|小時(shí)(0-23)|
|h|小時(shí)(1-12)
|m|分鐘|
|s|秒|
|S|毫秒|
unicode標(biāo)準(zhǔn)文檔
http://unicode.org/reports/tr35/#Date_Format_Patterns
每次用到都是重新去查一遍,簡(jiǎn)單總結(jié)一下,備用
項(xiàng)目中為了與Android相配合.要獲取到時(shí)間戳里的毫秒單位:
獲取方法:
UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
首先 [[NSDate date] timeIntervalSince1970] 是可以獲取到后面的毫秒 微秒的 ,只是在保存的時(shí)候省略掉了,所以想取得毫秒時(shí)用獲取到的時(shí)間戳 *1000 ,想取得微秒時(shí) 用取到的時(shí)間戳 * 1000 * 1000 。
參考文章:
http://blog.csdn.net/imanapple/article/details/43447825
http://blog.csdn.net/gilnuy0106/article/details/8451911