NSDateFormatterorm
在獲取sugarsync網盤的accessToken時候,獲得了過時時間。可是這裏的過時時間採用的是世界標準時間UTC,而該網盤是國外的,因此在國內顯示的時間就不對了,須要轉換爲當地時間。這就涉及到NSDateFormatter類。對象
常常看到在取時間的時候,每每要經過NSDateFormatter轉換一下,由於[NSDate date]獲得的時間是世界標準時間(格林尼治時間),與本地時間存在時差。因此須要用以下方式來轉換獲得本地時間字符串:字符串
NSDate* date = [NSDate date];string
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];it
[formatter setDateFormatter:@」yyyy-MM-dd HH:mm:ss」];io
NSString* dateStr = [formatter stringFromDate:date];form
這裏的HH表示24小時時間制,也能夠採用hh的12小時時間制,那通常還須要加上「aa」表示am或者pm;若是加上EEEE,則表示星期幾。至於其餘的轉換字符串格式什麼的就不討論了,這裏要重點討論一下從時間字符串轉換獲得NSDate對象。date
固然[formatter dateFromString:]方法是須要採用的。UTC時間字符串例以下面的示例「2014-3-24T15:16:23+0800」,這裏包含了日期和時間,還有時區。採用上面的formatter是不行的;有時候UTC的字符串比較長,例如「2014-3-24T15:16:23.561+07:00」。好吧,這樣轉換也會失敗的。rsync
針對第一種UTC時間字符串咱們須要換一個formatter:方法
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormatter:@」yyyy-MM-dd’T’ HH:mm:ssZ」];
[formatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate* date = [formatter dateFromString:expirationDate];
第二種UTC時間字符串則須要先將其變換爲第一種字符串,再用formatter。