2012-05-22 9 views
17

wiem, „żadnych części wymagających konserwacji wewnątrz” ... ale jestem ciekaw:Za kulisami: daty danych podstawowych przechowywane z przesunięciem 31-letnim?

W sqlite3 Rdzeń danych DB, wydaje się mogę na dzień w ZDATE tak:

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 
... 

Epoka Unix, którą otrzymuję, ale dlaczego 31 lat?

+0

można przekonwertować po przecinku znaleźć w SQLite do czasu rzeczywistego data użyciu http://www.epochconverter.com/coredata – J3RM

Odpowiedz

20

przechowuje danych Core daty w stosunku do daty odniesienia, który jest Jan 1st, 2001 (31 lat po EPOCH jak wskazano w komentarzach)

Oto niektóre kodu do dekodowania daty z tabeli, w przypadku gdy jest przydatne dla ciebie.

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

Spójrz na + dateWithTimeIntervalSinceReferenceDate:

+3

1 sty 2001 to 31 lat po Epoce Uniksa. To brzmi jak odpowiedź do mnie. – paulmelnikow

+0

Dobra uwaga, zredagowałem moją odpowiedź, aby to określić. +1 do Ciebie – mprivat

Powiązane problemy