• NSDateFormatter常见的使用方式


    NSDateFormatter是NSFormatter的子类,是用来表示输出的时间格式。

    下面贴出两个时间的例子。

    例子一、

    - (void)dateString1 {
    
        NSDateFormatter *format=[[NSDateFormatter alloc] init];
        [format setDateFormat:@"yyyy-MM-dd a HH:mm:ss EEEE"];
        format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
        [format setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        NSString *dateString = [format stringFromDate:[NSDate date]];
        
        NSLog(@"%@:----%@",NSStringFromSelector(_cmd),dateString);
    
    }
    
    打印结果如下:
    
    2017-02-27 23:21:53.616 MyTestWorkProduct[4185:114496] dateString1:----2017-02-27 PM 15:21:53 Monday

    例子二、

    - (void)dateString2 {
        
        NSDateFormatter *format=[[NSDateFormatter alloc] init];
        format.dateStyle = kCFDateFormatterFullStyle;
        format.timeStyle = kCFDateFormatterFullStyle;
        format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
        [format setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        NSString *dateString = [format stringFromDate:[NSDate date]];
        
        NSLog(@"%@:----%@",NSStringFromSelector(_cmd),dateString);
        
    }
    
    打印结果如下:
    
    2017-02-27 23:21:53.623 MyTestWorkProduct[4185:114496] dateString2:----2017年2月27日 星期一 GMT 下午3:21:53

    例子分析:

    从上面两个方法与打印结果中可见,NSDateFormatter类型设置通常设置三项:1.日前+时间设置;2.本地设置;3.时区设置。

    1.前+时间设置

    日前+时间设置分为两类,一种是系统类型的设置,另一种是自定义设置

    系统类型的设置是系统提供的枚举

     英文
    [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
        kCFDateFormatterNoStyle = 0,       // 无输出
        kCFDateFormatterShortStyle = 1,    // 10/29/12, 2:27 PM
        kCFDateFormatterMediumStyle = 2,   // Oct 29, 2012, 2:36:59 PM
        kCFDateFormatterLongStyle = 3,     // October 29, 2012, 2:38:46 PM GMT+08:00
        kCFDateFormatterFullStyle = 4      // Monday, October 29, 2012, 2:39:56 PM China Standard Time
    };
    
     中文
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
    typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
        kCFDateFormatterNoStyle = 0,       // 无输出
        kCFDateFormatterShortStyle = 1,    // 12-10-29 下午2:52
        kCFDateFormatterMediumStyle = 2,   // 2012-10-29 下午2:51:43
        kCFDateFormatterLongStyle = 3,     // 2012年10月29日 GMT+0800下午2时51分08秒
        kCFDateFormatterFullStyle = 4      // 2012年10月29日星期一 中国标准时间下午2时46分49秒
    };
        

    自定义设置

    1.[format setDateFormat:@"yyyy-MM-dd a HH:mm:ss EEEE"];
    
    2.[format setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

    2.本地设置

    本地设置中常用的是中文和英文

    //中文
    format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
    //英文
    format.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

    3.时区设置。

    有时候获取的时间差了8小时,这是因为时区问题导致的,解决方法如下:

     [format setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
     或者
     [format setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

    这三种属性任意设置,就可以获得不同类型的时间格式

  • 相关阅读:
    穷举法和搜索法的统计三角形
    2015.5.21 Core Java Volume 1
    我喜欢出发
    MeshLab中画面在前面加个f的代码
    【axel帮助代码】为了在单位正方形里面画一个洞 ,网上获取了此代码。
    uniapp 发起网络请求
    qt 取进程列表,读写内存, 写字节集
    qt 注册热键
    qt 获取窗口句柄的线程id和进程id GetWindowThreadProcessId
    qt 向窗口发送消息,键盘输入事件
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/6477025.html
Copyright © 2020-2023  润新知