2014-02-06 77 views
1

我有一個日期字符串,看起來像這樣:日期格式是怪異

1391640679661 

當我使用此代碼:

NSString *seconds = @"1391640679661"; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[seconds doubleValue]]; 

我結束了這一點:

46069-05-03 07:27:41 +0000 

那麼這裏發生了什麼?這是我沒有考慮的特定日期格式嗎?還是我在做其他事情?

+3

您的值以毫秒爲單位,而不是秒。 – rmaddy

回答

1

要轉換的時間戳字符串轉換成NSDate的,你需要的時間戳雙重價值DIVID到1000,然後調用dateWithTimeIntervalSince1970:

NSString *timestamp = @"1391640679661"; 
double seconds = [timestamp doubleValue]/1000.0; 
NSDate *date = [NSDate dateWithTimeIntervalSince1970:seconds]; 

結果是:

2014-02-05 22: 51:19 +0000

2

蘋果自己的api將根據您的需要爲您完成所有艱難的工作。
如果你想獲得單獨的組件,你可以應用下面的方法。

NSTimeInterval theTimeInterval = 1391640679661; 

// Get the system calendar 
NSCalendar *sysCalendar = [NSCalendar currentCalendar]; 

// Create the NSDates 
NSDate *date1 = [[NSDate alloc] init]; 
NSDate *date2 = [[NSDate alloc] initWithTimeInterval:theTimeInterval sinceDate:date1]; 

// Get conversion to months, days, hours, minutes 
unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 

NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0]; 

NSLog(@"Conversion: %dmin %dhours %ddays %dmoths",[conversionInfo minute], [conversionInfo hour], [conversionInfo day], [conversionInfo month]);