Foundation框架—時間輸出格式NSDateFormatter

在開發iOS程序時,有時候須要將時間格式調整成本身但願的格式,這個時候咱們能夠用NSDateFormatter類來處理。下面來介紹NSDateFormatter的經常使用屬性和API;html

 

 1.經常使用屬性spa

@property (null_resettable, copy) NSString *dateFormat;//設置輸出時間內容:日誌

/*quarter--->季度
     公元前/後:AD  
     年份:2017=2017=17 
     季度:2=Q2=2nd quarter
     月份:4=Apr=April 
     今天是今年第幾周:17 
     今天是本月第幾周:5 
     今天是今天第幾天:114 
     今天是本月第幾天:24 
     今天是星期幾:Monday
     星期:2=Mon=Monday
     上午/下午:AM 
     小時:10=10 
     分鐘:30 
     秒:48 
     毫秒:918  
     這一天已過多少毫秒:37848918 
     時區名稱:China Standard Time=China Standard Time 時區編號:+0800
     */
    /*
     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: 毫秒  
     Z:GMT
     */

例子:code

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"\
                                 '公元前/後:'G\
                                 '年份:'u'='yyyy'='yy\
                                 '季度:'q'='qqq'='qqqq\
                                 '月份:'M'='MMM'='MMMM \
                                 '今天是今年第幾周:'w \
                                 '今天是本月第幾周:'W \
                                 '今天是今年第幾天:'D \
                                 '今天是本月第幾天:'d \
                                 '今天是星期幾:'EEEE \
                                 '星期:'c'='ccc'='cccc \
                                 '上午/下午:'a \
                                 '小時:'h'='H\
                                 '分鐘:'m\
                                 '秒:'s \
                                 '毫秒:'SSS\
                                 '這一天已過多少毫秒:'A \
                                 '時區名稱:'zzzz'='vvvv \
                                 '時區編號:'Z "];
    
    NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);

    //"yyyy年MM月dd日 HH時mm分ss秒 +0800";orm

    //按照什麼樣的格式來格式化時間htm

    //formatter.dateFormat = @"yyyy年MM月dd日 HH時mm分ss秒 Z";對象

    //formatter.dateFormat = @"yyyy/MM/dd HH/mm/ss Z";blog

    //formatter.dateFormat = @"MM-dd-yyyy HH-mm-ss";開發

 

 

@property NSDateFormatterStyle dateStyle;字符串

@property NSDateFormatterStyle timeStyle;

//設置日期對象展現方式,關於樣式:

typedef NS_ENUM(NSUInteger, NSDateFormatterStyle) {    // date and time format styles

    NSDateFormatterNoStyle = kCFDateFormatterNoStyle,

    NSDateFormatterShortStyle = kCFDateFormatterShortStyle,

    NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,

    NSDateFormatterLongStyle = kCFDateFormatterLongStyle,

    NSDateFormatterFullStyle = kCFDateFormatterFullStyle

};

 /*

       NSDateFormatterStyle幾種取值樣式

       NSDateFormatterNoStyle

       例如: (其實就是空白的,不顯示) 

       NSDateFormatterShortStyle

       例如:下午7:00 | 15/5/19

       NSDateFormatterMediumStyle

       例如:下午7:00:00 | 2013年5月19日

       NSDateFormatterLongStyle

       例如:GMT +8下午7:00:00 | 2013年5月19日 

       NSDateFormatterFullStyle

       例如:中國標準時間下午7:00:00 | 2013年5月19日 星期日

     */

 

@property (null_resettable, copy) NSLocale *locale;//設置本地的屬性,可經過設置本地對象來決定打印出來的語言,好比設置本地標示爲zh_CN,那麼會用中文打印結果;

 //NSLocale
    NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800];
    //大陸--簡體中文
    dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];//簡體中文
    NSLog(@"%@", [dateFormatter2 stringFromDate:date]);
    // US English Locale (en_US)
    dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // Jan 2, 2001
    // French Locale (fr_FR)
    dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
    NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // 2 janv. 2001
    // Japanese Locale (ja_JP)
    dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"];
    NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // 2001/01/02

   

 

@property (null_resettable, copy) NSTimeZone *timeZone;//時區的設置,咱們所處的中國是在東八區。經過系統API調用獲取到的時間對象默認是GMT時間,也便是0時區時間,雖然在絕對時間上哪一個時區都同樣,可是在具體地方的相對時間展現是不一樣的。所以要具體展現時能夠調整相應的時區。關於NSTimeZone的知識介紹,能夠參考個人另外一篇博文

 

NSDateFormatter中timezone的使用:

// NSDateFormatter 設置時區
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 設置時區,設置爲 GMT
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

 

@property (null_resettable, copy) NSCalendar *calendar;;//日曆對象,關於NSCalendar的知識介紹,能夠參考個人另外一篇博文

  2.經常使用方法

stringFromDate

dateFromString

 

 好了,關於NSDateFormatter的經常使用知識點了解的差很少了,如今讓咱們來一段實戰代碼:

 

 //        獲取時間
        NSDate *date = [NSDate date];
        NSLog(@"國際標準時間:%@",date);
        //        獲取系統當前時區
        NSTimeZone *zone = [NSTimeZone systemTimeZone];//中國位於東八區、與國際標準時間相差8小時
        //      獲取當前時區與格林尼治時間的間隔
        NSTimeInterval ti  = [zone secondsFromGMTForDate:date];
        //獲取本地時間
        NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:ti];
        NSLog(@"當前時區的時間:%@",localDate);
        //
        /*日期格式轉換*/
        NSDateFormatter *dfmt = [[NSDateFormatter alloc]init];
        //設置日期格式 注意大小寫的區分
        dfmt.dateFormat = @"yyyy年MM月dd日 HH時:mm分:ss秒";
        //按照日期格式 轉化爲字符串
        //GMT時間轉換爲日期字符串
        NSLog(@"日期轉字符串2:%@",[dfmt stringFromDate:date]);
        //本地時間對象轉化內時間字符串
        NSString *localDateString = [dfmt stringFromDate:localDate];//調用這個API時,默認將時間對象認爲時格林尼日誌時間(內部又從新加了格林尼治時間與當前時區的時差8小時,因此要獲取當前時間的字符串對象時,不須要再額外轉換成當前時區的時間對象)
        NSLog(@"日期轉字符串:%@",localDateString);
        //按照日期格式 將時間字符串轉化爲時間對象
        NSDate *localDate2 = [dfmt dateFromString:localDateString];
        NSLog(@"字符串轉日期:%@",localDate2);
相關文章
相關標籤/搜索