APP展示给用户的时候,时间肯定都是以字符串的形式. 服务器返回的时间也是以字符串的格式. 但是从服务器拿回来的时间一般都需要经过一个转换才能使用.服务器返回的格式:"162000"或者"2005-07-01 12:00:00 -0700", iOS中需要借助NSDate来处理
时间的格式化主要2步:
- 从字符串转换成NSDate
- 从NSDate转换成特定格式的字符串
转换的中间需要使用 NSDateFormatter
,这个类专门用来设置NSDate的格式
1.从字符串转成NSDate
如果服务器返回的格式是: "162000"
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:162000];
如果服务器返回的格式是: "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转换成特定格式的字符串
[formatter stringFromDate:date];
其实跳到NSDateFormatter
这个类里面去看,并没有太多的东西
- (NSString *)stringFromDate:(NSDate *)date;
- (nullable NSDate *)dateFromString:(NSString *)string;
看名称就很明显能理解函数的作用了
时间的格式
常用的几个
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
||
|:---:|:---:|
|y|年|
|M|月|
|d|日|
|H|小时(0-23)|
|h|小时(1-12)
|m|分钟|
|s|秒|
|S|毫秒|
unicode标准文档
http://unicode.org/reports/tr35/#Date_Format_Patterns
每次用到都是重新去查一遍,简单总结一下,备用
项目中为了与Android相配合.要获取到时间戳里的毫秒单位:
获取方法:
UInt64 recordTime = [[NSDate date] timeIntervalSince1970]*1000;
首先 [[NSDate date] timeIntervalSince1970] 是可以获取到后面的毫秒 微秒的 ,只是在保存的时候省略掉了,所以想取得毫秒时用获取到的时间戳 *1000 ,想取得微秒时 用取到的时间戳 * 1000 * 1000 。
参考文章:
http://blog.csdn.net/imanapple/article/details/43447825
http://blog.csdn.net/gilnuy0106/article/details/8451911