2012-05-22 49 views
17

我知道,「沒有用戶可維修的部件」 ......但我很好奇:幕後:核心數據日期與31年抵消存儲?

在覈心數據sqlite3的DB,看來我可以在日期ZDATE內得到像這樣:

sqlite> select datetime(ZDATE,'unixepoch','31 years','localtime') from ZMYCLASS; 
2003-12-11 19:00:00 
2009-12-31 19:00:00 
2009-01-24 19:00:00 
2011-01-01 19:00:00 
2009-10-03 20:00:00 
... 

Unix Epoch我得到,但爲什麼31年?

+0

可以使用http://www.epochconverter.com/coredata – J3RM

回答

20

核心數據的保存日期,相對於基準日,這是2001年1月1日(EPOCH後的第31年,在評論中指出)

下面是一些代碼從表中的日期進行解碼,如果它是對你有用。

NSNumber *time = [NSNumber numberWithDouble:(d - 3600)]; 
NSTimeInterval interval = [time doubleValue];  
NSDate *online = [NSDate dateWithTimeIntervalSinceReferenceDate:interval]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm:ss.SSS"]; 

NSLog(@"result: %@", [dateFormatter stringFromDate:online]); 

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

看看+ dateWithTimeIntervalSinceReferenceDate:

+3

1月1日在源碼中找到的十進制轉換爲真正的約會時間, 2001年是Unix紀元後的31年。這聽起來像是對我的回答。 – paulmelnikow

+0

好點,編輯我的答案來指定。 +1給你 – mprivat