美文网首页
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