2012-05-22 7 views
17

Ich weiß „keine vom Anwender zu wartenden Teilen“ ... aber ich bin neugierig:Hinter den Kulissen: Kerndaten Daten mit 31-Jahres-Offset gespeichert?

In einer Core Data sqlite3 DB, es scheint, dass ich an dem Tag in einem ZDate wie so erhalten kann:

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 bekomme ich, aber warum 31 Jahre?

+0

Sie das Dezimalsystem in der SQLite zu einem echten Datum Zeit http://www.epochconverter.com/coredata – J3RM

Antwort

20

Core Data speichern Daten zu Stichtag bezogen, der 1. Januar ist 2001

Hier (31 Jahre nach EPOCH wie in den Kommentaren darauf hingewiesen) ist ein Code, die Daten aus der Tabelle, für den Fall zu entschlüsseln ist nützlich für dich.

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

Werfen Sie einen Blick auf + dateWithTimeIntervalSinceReferenceDate:

+3

1. JANUAR Verwendung gefunden umwandeln kann, 2001 ist 31 Jahre nach der Unix-Epoche. Das klingt wie eine Antwort auf mich. – paulmelnikow

+0

Guter Punkt, bearbeitete meine Antwort, um das zu spezifizieren. +1 für dich – mprivat

Verwandte Themen