zoukankan      html  css  js  c++  java
  • 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]];

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

  • 相关阅读:
    SqlConnectionStringBuilder
    什么时候使用“静态方法”(转)
    Dos命令下多文件中查找某字符串
    StructLayout(LayoutKind.Sequential)(转)
    DOS批处理高级教程:第四章 批处理中的变量(转)
    DOS批处理高级教程:第一章 批处理基础(转)
    C#各种进制之间数据转换二进制、八进制、十进制、十六进制
    DOS批处理高级教程:第六章 if命令讲解(转)
    ModbusRTU模式和结束符(转)
    DOS批处理高级教程:第七章 DOS批处理编程高级技巧(转)
  • 原文地址:https://www.cnblogs.com/zhou--fei/p/6477025.html
Copyright © 2011-2022 走看看