2016-09-06 89 views
0

我從Here問題,而轉換時間戳本地時區日期

//Timestamp 1473163200000 

我想把它轉換成inot基於當前時區Date對象生成的時間戳。

我這樣做是:

NSDate *gmtDate = [NSDate dateWithTimeIntervalSince1970:1473163200000/1000]; 
NSTimeInterval timeZoneOffset = [[NSTimeZone systemTimeZone] secondsFromGMTForDate:gmtDate]; 




NSDate *localDate = [gmtDate dateByAddingTimeInterval:timeZoneOffset]; 

現在,當我po當地的日期我得到這個:

(lldb) po localDate 
    2016-09-06 17:30:00 +0000 

當我使用DateFormatter來登錄localDate

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd-HH-mm-ss"]; 
NSString *newDate = [dateFormat stringFromDate:localDate]; 

我得到這個:

(lldb) po newDate 
2016-09-06-23-00-00 

但我想這是:

Tue Sep 06 2016 17:30:00 

什麼我失蹤? 請避免格式化我對時區更加好奇。

+0

在你dateFormatter,給他你的地方,也是DATEFORMAT不匹配你想要的格式。 – Larme

+0

'NSString * newDate = @「Tue Sep 06 2016 17:30:00」;'順便說一句:你對時區做什麼是概念上的錯誤。 –

回答

0

試試這個代碼

NSDate *date = [NSDate dateWithTimeIntervalSince1970:1473163200000/1000]; 

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 

dateFormatter.dateFormat = @"EEE MMM dd yyyy HH:mm:ss"; 
NSString *formattedDate = [dateFormatter stringFromDate: date]; 

NSLog(@"formattedDate: %@",formattedDate); 

輸出:

formattedDate: Tue Sep 06 2016 17:30:00 
+0

什麼是EEE? – Dalvik

+0

顯示星期三的第一個字母,因爲你想顯示「星期二」。看到那裏:http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns – Larme

+0

@Larme謝謝:) – Dalvik