美文网首页iOS 深度好文
iOS 日期操作:NSDate、NSDateFormatter

iOS 日期操作:NSDate、NSDateFormatter

作者: GreenC | 来源:发表于2017-05-10 18:03 被阅读3562次

    NSDate

    • NSDate对象用来表示一个具体的时间点。
    • NSDate是一个类簇,我们所使用的NSDate对象,都是NSDate的私有子类的实体。
    • NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示。

    获取当前时间,获得的时0市区的时间跟北京时间相差8小时

    NSDate *currentDate = [NSDate date]; // GMT NSLog(@"currentDate :%@",currentDate);

    ** NSDateFormatter**
    NSDateFormatter是NSFormatter的子类,另,NSFormatter的用途是“将数据在字符串与特定类型的对象之间转换”,目前NSFormatter只有两个子类NSNumberFormatter和NSDateFormatter。

    NSDateFormatter提供了许多已定义好的时间格式,下面我们只提供例子,具体参考文档

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateStyle = NSDateFormatterMediumStyle; dateFormatter.timeStyle = NSDateFormatterMediumStyle;

    开发人员可根据喜欢自定义时间格式。格式化参数在本文档最后。

    dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 中

    将时间字符串转换到NSDate对象,一般都是使用"年月日 时分秒",数据库中的date类型基本上也是这样的时间类型。 格式一般为:yyyy-MM-dd HH:mm:ss。

    - (NSDate *)dateFromString:(NSString *)dateString format:(NSString *)format { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = format; return [dateFormatter dateFromString:dateString]; }

    将NSDate对象转换成特定格式的字符串。

    NSDate *now = [NSDate date];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
    // stringFromDate 将日期类型格式化,转为NSString 类型
    NSString *current = [formatter stringFromDate:now];
    

    转换后的字符串会根据设备的“区域格式”,显示特定语言的结果。假如程序需要保证不同语言环境下显示一致,请注意这方面的问题,使用其他代替方法!

    附:NSDateFormatter格式化参数如下:

    G: 公元时代,例如AD公元
    yy: 年的后2位
    yyyy: 完整年
    MM: 月,显示为1-12
    MMM: 月,显示为英文月份简写,如 Jan
    MMMM: 月,显示为英文月份全称,如 Janualy
    dd: 日,2位数表示,如02
    d: 日,1-2位显示,如 2
    EEE: 简写星期几,如Sun
    EEEE: 全写星期几,如Sunday
    aa: 上下午,AM/PM
    H: 时,24小时制,0-23
    K:时,12小时制,0-11
    m: 分,1-2位
    mm: 分,2位
    s: 秒,1-2位
    ss: 秒,2位
    S:毫秒

    常用日期结构:
    yyyy-MM-dd HH:mm:ss.SSS
    yyyy-MM-dd HH:mm:ss
    yyyy-MM-dd
    MM dd yyyy

    注意:yyyy是小写的;大写的YYYY的意思有些不同——“将这一年中第一周的周日当作今年的第一天”,因此有时结果和yyyy相同,有时就会不同。

    相关文章

      网友评论

        本文标题:iOS 日期操作:NSDate、NSDateFormatter

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