2013-01-03 41 views
2

可能重複:
Create NSDate from Unix timestamp如何在UNIX時間戳轉換成NSDate的在iphone

我在那裏我在Unix時間戳format.This接收日期從JSON的應用程序是時間戳,我從json'1357178589630'。如何將此時間戳轉換爲正確的nsdate.I已使用下面的代碼進行轉換,但它不能正常工作。這是我的代碼:

double timestampval = [[updates objectForKey:@"timestamp"] doubleValue]; 
NSTimeInterval timestamp = (NSTimeInterval)timestampval; 
NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp]; 

當時間戳被轉換使用datewithtimeIntervalSince1970到的NSDate,在它顯示「44977-04-11 12點四十零分30秒0000」

+1

它給出正確的結果,似乎你的時間戳是不正確的。嘗試轉換你的時間戳在這裏http://www.onlineconversion.com/unix_time.htm – Rikesh

+2

你可能有毫秒,在Java日期對象中使用(據我所知)。只需將值除以1000,那麼結果是「星期四,2013年1月3日02:03:09 GMT」。 –

+0

@MartinR:正是...... :) –

回答

19

嘗試這一個表示UpdateTimestamp變量:

可能是你越來越時間戳是毫秒,而不是秒,讓你由1000

較新的編輯把它:

double timestampval = [[updates objectForKey:@"timestamp"] doubleValue]/1000; 
NSTimeInterval timestamp = (NSTimeInterval)timestampval; 
NSDate *updatetimestamp = [NSDate dateWithTimeIntervalSince1970:timestamp]; 

上:

double unixTimeStamp =1304245000; 
NSTimeInterval timeInterval=unixTimeStamp/1000; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init]; 
[dateformatter setLocale:[NSLocale currentLocale]]; 
[dateformatter setDateFormat:@"dd-MM-yyyy"]; 
NSString *dateString=[dateformatter stringFromDate:date]; 
+0

感謝您的舊答案。我需要使用unixTimeStamp獲取當前本地時間戳。再次感謝。 –

+0

@Jack_iPhone:使用'NSTimeInterval unixTimeStamp = [[NSDate date] timeIntervalSince1970];' –

+0

工作,但我們需要時區在這裏設置 –

8

[NSDate dateWithTimeIntervalSince1970:timestamp]是正確的。似乎你的時間戳是錯誤的。

而不是1357178589630它應該是1357178589

嘗試here

更新:根據上面的Martin評論。

只需除以1000

2

值試試這個代碼..

NSDate *dateTraded = [NSDate dateWithTimeIntervalSince1970 :[[updates objectForKey:@"timestamp"] integerValue]]; 

和Unix的時間戳是在幾秒鐘內,你必須看起來像一個數,因爲1毫秒的1970年1月如果值你除以1000,你得到1264396813,根據http://www.onlineconversion.com/unix_time.htm