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 轉換就可以了。
留言
張貼留言