2011-04-18 76 views
2

我在秒1303093926時間,我希望得到的日期和時間像iPhone:如何從秒數中獲取日期和時間?

週六,2010年10月9 18時14分50秒+0000

+2

答案會根據你在哪裏得到秒數而有所不同。用你的例子,你是如何得到1303093926? – sosborn 2011-04-18 04:03:23

+0

秒數從1970開始 – Sharj 2011-04-18 04:10:26

回答

2

的NSDate有一個轉換方法:

double seconds = 1303093926; 
NSTimeInterval timeInterval = (NSTimeInterval)seconds; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timeInterval]; 

然後,您可以使用NSDateFormatter類將NSDate轉換爲所需格式的字符串。

+0

這隻適用於如果你的秒數從1970年開始。 – Moshe 2011-04-18 04:03:15

+0

@Moshe好點。如果秒數從不同的日期開始,還有其他轉換方法。請參閱:http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html – 2011-04-18 04:05:11

+0

的確,請參閱我的答案。 – Moshe 2011-04-18 04:05:28

0

NSDate有幾種從第二個值創建日期對象的方法。 NSDate的有整整做了四種方法你想要什麼:

  • +(ID)dateWithTimeInterval:(NSTimeInterval)秒sinceDate:(NSDate的*)日期:如果您的秒數是基於一些任意的日期,你會使用這種方法。

  • +(ID)dateWithTimeIntervalSince1970:秒:如果自1970年以來的秒數是基於時間,那麼你可以使用這個方法。

  • +(id)dateWithTimeIntervalSinceNow:(NSTimeInterval)秒:如果秒數是相對於當前時間,請使用此值。 (負秒是日之前的「現在」。)

  • +(ID)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)秒:如果你知道你的秒數相對預定的「基準日」,( 2001年1月1日,GMT),那麼你應該使用這種方法。

另一種方法,就是用NSDateComponents來建立你的日期對象。從NSDateComponents文檔:

NSDateComponents *comps = [[NSDateComponents alloc] init]; 
[comps setDay:6]; 
[comps setMonth:5]; 
[comps setYear:2004]; 
NSCalendar *gregorian = [[NSCalendar alloc] 
initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDate *date = [gregorian dateFromComponents:comps]; 

你可以做同樣的你的秒數,使用基本算術到秒轉換爲年,月,日,小時,分鐘和秒。

+0

感謝您的回答。我的秒數從1970年開始。我將來會使用這個解決方案。 – Sharj 2011-04-18 04:11:21

相關問題