设置时间格式

    1. "2011-01-26 17:40:50";  
    2.     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
    3.     [formatter setDateStyle:NSDateFormatterMediumStyle];  
    4.     [formatter setTimeStyle:NSDateFormatterShortStyle];     
    5. "YYYY-MM-dd HH:mm:ss"]; // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    6.      
    7. //设置时区,这个对于时间的处理有时很重要
    8. //例如你在国内发布信息,用户在国外的另一个时区,你想让用户看到正确的发布时间就得注意时区设置,时间的换算.
    9. //例如你发布的时间为2010-01-26 17:40:50,那么在英国爱尔兰那边用户看到的时间应该是多少呢?
    10. //他们与我们有7个小时的时差,所以他们那还没到这个时间呢...那就是把未来的事做了
    11.      
    12. "Asia/Shanghai"];  
    13.     [formatter setTimeZone:timeZone];

    时间转化为时间戳的方法

      1. //------------将字符串按formatter转成nsdate      
      2. //现在时间,你可以输出来看下是什么格式
      3. //----------将nsdate按formatter格式转成nsstring
      4. 时间转时间戳的方法:  
      5. "%d", (long)[datenow timeIntervalSince1970]];  
      6. "timeSp:%@",timeSp); //时间戳的值

      时间戳转化为时间的方法

        1.  NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1296035591];  
        2. "1296035591  = %@",confromTimesp);        
        3.     NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];  
        4. "confromTimespStr =  %@",confromTimespStr);

        获取当前日期、时间、星期

        NSDate *date = [NSDate date];
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDateComponents *comps;
        
        // 年月日获得
        comps = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
                                                fromDate:date];
        NSInteger year = [comps year];
        NSInteger month = [comps month];
        NSInteger day = [comps day];
        NSLog(@"year: %d month: %d, day: %d", year, month, day);
        
        
        //当前的时分秒获得
        comps = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit)
                                                fromDate:date];
        NSInteger hour = [comps hour];
        NSInteger minute = [comps minute];
        NSInteger second = [comps second];
        NSLog(@"hour: %d minute: %d second: %d", hour, minute, second);
        
        // 周几和星期几获得
        comps = [calendar components:(NSWeekCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit)
                                                fromDate:date];
        NSInteger week = [comps week]; // 今年的第几周
        NSInteger weekday = [comps weekday]; // 星期几(注意,周日是“1”,周一是“2”。。。。)
        NSInteger weekdayOrdinal = [comps weekdayOrdinal]; // 这个月的第几周
        NSLog(@"week: %d weekday: %d weekday ordinal: %d", week, weekday, weekdayOrdinal);





        3、iOS-NSDateFormatter 格式说明:

        (:)

        时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由您的应用程序的当前区域性值确定。

        (/)

        日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的应用程序的当前区域性确定。

        (%)

        用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关更多详细信息,请参见下面的内容。

        d

        将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。

        dd

        将日显示为带前导零的数字(如 01)。

        EEE

        将日显示为缩写形式(例如 Sun)。

        EEEE

        将日显示为全名(例如 Sunday)。

        M

        将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。

        MM

        将月份显示为带前导零的数字(例如 01/12/01)。

        MMM

        将月份显示为缩写形式(例如 Jan)。

        MMMM

        将月份显示为完整月份名(例如 January)。

        gg

        显示时代/纪元字符串(例如 A.D.)

        h

        使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用 %h。

        hh

        使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。

        H

        使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H。

        HH

        使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。

        m

        将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。

        mm

        将分钟显示为带前导零的数字(例如 12:01:15)。

        s

        将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。

        ss

        将秒显示为带前导零的数字(例如 12:15:05)。

        f

        显示秒的小数部分。例如,ff 将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。用户定义格式中最多可使用七个 f 符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。

        t

        使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M 之间的任一小时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。

        tt

        对于使用 12 小时制的区域设置,对中午之前任一小时显示大写的 AM,对中午到 11:59 P.M 之间的任一小时显示大写的 PM。

        对于使用 24 小时制的区域设置,不显示任何字符。

        y

        将年份 (0-9) 显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。

        yy

        以带前导零的两位数字格式显示年份(如果适用)。

        yyy

        以四位数字格式显示年份。

        yyyy

        以四位数字格式显示年份。

        z

        显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。

        zz

        显示带前导零的时区偏移量(例如 -08)

        zzz

        显示完整的时区偏移量(例如 -08:00)


        格式显示

        M/d/yy

        12/7/58

        d-MMM

        7-Dec

        d-MMMM-yy

        7-December-58

        d MMMM

        7 December

        MMMM yy

        December 58

        hh:mm tt

        08:50 PM

        h:mm:ss t

        8:50:35 P

        H:mm

        20:50

        H:mm:ss

        20:50:35

        M/d/yyyy H:mm

        12/7/1958 20:50