IOS_Object-C 學習筆__ 日期時間處理使用 (NSDate)

日期時間處理使用 (NSDate) 使用方式

NSDate 物件是表示特定的時間點。而且這裡面記錄的時間是自2001/01/01 以來的時間, 時區是GTM+0

因此取得目前的時間方式可以透過 NSDate 來得到!

 NSDate *today = [NSDate date];
 NSLog(@"  拿到的時間是 :  %@",today);
而在模擬器跑出來的結果是
拿到的時間是 :  2017-07-24 10:18:48 +0000
後面這個 +0000 ,的意思是用GCM+0 的時區來列印的,因為這個是美國時間!而在台灣的我們時區是 GMT+8 ,所以如果是要印出台灣的時間,就要先作轉換!!

因此可以透過以下兩種方式來轉換!
1. 用 NSDateFormatter 直接轉換
2. 用 setLocale 和 setTimeZone 時區位置和哪個城市的時間

第一種方式:
   //透過 NSDateFormatter 來轉換成台灣時區
    NSDateFormatter *taiwan = [[NSDateFormatter alloc] init];
    [taiwan setDateStyle:NSDateFormatterShortStyle];     //印出年月日
    [taiwan setTimeStyle:NSDateFormatterMediumStyle];    //印出台灣時間
    NSString *taiwanTime = [taiwan stringFromDate:today];
    NSLog(@" 台灣的時間是 : %@",taiwanTime);


第二種方式:
  //不管位置如何,只限定台灣時區
  // setup date format
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hant_TW"]];
    [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Taipei"]]

  //這裡可以轉換所要格式的樣式
    [formatter setDateFormat:@"yyyMMd"];
    // Date to string
    NSDate *now = [NSDate date];
    NSString *twoo = [formatter stringFromDate:now];
    NSLog(@"無論位置,就都顯示台灣時區日期 : %@", twoo);



後記: 這一篇內容會誕生的原因是,最近在寫一個關於發票的APP , 用了人家寫好的第三方日曆套件 JTCalendar 的過程中,要把點選到的時間給列印出來! 

而那時候點了日曆上的時間,印出來的內容則是比台灣的還要晚一天! 因此還花了一點時間找了相關資料,經過瞭解後才知道,時內建時區的問題

所以只要透過 NSDataFormatter 轉換就可以了。

留言

這個網誌中的熱門文章

IOS_Objective-C學習筆記_(陣列 / 可修改陣列 ;字典 / 可修改字典)..

20170122 Radiobutton功能練習 (溫度轉換)

iOS_開發 拿到 Tableview Cell 上的按鈕是哪一個 (Tableview Cell Button)