美文网首页
iOS 时间格式化(Date Formatters)

iOS 时间格式化(Date Formatters)

作者: 零点知晨 | 来源:发表于2017-01-08 21:43 被阅读0次

首先帖一下官方的文档: https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html

APP展示给用户的时候,时间肯定都是以字符串的形式. 服务器返回的时间也是以字符串的格式. 但是从服务器拿回来的时间一般都需要经过一个转换才能使用.服务器返回的格式:"162000"或者"2005-07-01 12:00:00 -0700", iOS中需要借助NSDate来处理

时间的格式化主要2步:

  1. 从字符串转换成NSDate
  2. 从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

相关文章

网友评论

      本文标题:iOS 时间格式化(Date Formatters)

      本文链接:https://www.haomeiwen.com/subject/dbccbttx.html