2016-04-13 198 views
0

我想@"2016-04-15T15:00:00-07:00"轉換爲NSDate客觀C.我現在用的是NSdateFormatter@"yyyy-MM-dd'T'HH:mm:ssZZZZZ",但沒有得到NSDate將字符串轉換日期的NSDate

我不得不作出從服務器字符串日期PST時間的NSDate

代碼:

NSString *strDate = @"2016-04-15T22:00:00Z"; 

NSDate* ts_utc; 

NSDateFormatter* df_utc = [[NSDateFormatter alloc] init]; 
[df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[df_utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 

ts_utc = [df_utc dateFromString:strDate]; 



NSDateFormatter* df_local = [[NSDateFormatter alloc] init]; 
[df_local setTimeZone:[NSTimeZone timeZoneWithName:@"PST"]]; 
[df_local setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 

NSString* ts_local_string = [df_local stringFromDate:ts_utc]; 


NSDate *date = [df_local dateFromString:ts_local_string]; 

請建議。

+0

顯示代碼... – trojanfoe

+0

@trojanfoe - 代碼已更新 – NiKKi

+0

確保您的語言環境設置爲英語,否則您將在非英語語言環境中使用時區名稱時遇到問題。 'UTC'或'PST'都不是標準化的名稱。 – Sulthan

回答

0

編輯

我有同樣的問題,因爲你和我解決它以這種方式

NSString *strDate = @"2016-04-15T22:00:00Z"; 
NSDate* ts_utc; 
NSDateFormatter* df_utc = [[NSDateFormatter alloc] init]; 
[df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
[df_utc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"]; 
ts_utc = [df_utc dateFromString:strDate]; 

NSTimeZone *destinationTimeZone = [NSTimeZone timeZoneWithName:@"PST"]; 
NSInteger timeZoneHourOffset = (NSInteger) ([destinationTimeZone secondsFromGMTForDate:ts_utc]/3600.0); //geting the time offset between UTC and PST 
NSDate *pstDate = [ts_utc dateByAddingTimeInterval:timeZoneHourOffset * 60 * 60]; //applying that offset into ts_utc NSDate 

希望,這將HEP你!

+0

這不應該是'Z''(即引用)嗎? – trojanfoe

+0

我想在PST時區的日期。不是UTC – NiKKi

+0

@NiKKi是的,但是你在日期字符串的末尾有一個字面的'Z',它顯示它是「zulu」(UTC)。如何將其轉換爲PST內部與將字符串解析爲'NSDate'無關。 – trojanfoe

相關問題