23

「ユーザーが修理できる部品は内部にない」ことは知っていますが、興味があります。

Core Data 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 年なのですか?

4

1 に答える 1

23

Core Dataは、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:

于 2012-05-22T18:46:41.423 に答える