Jak przekonwertować NSDate
znacznik czasu na uniksowy? Czytałem wiele postów, które robią odwrotnie. Ale nie znajduję niczego związanego z moim pytaniem.
ios
iphone
nsdate
unix-timestamp
neha
źródło
źródło
Znacznik czasu systemu Unix to liczba sekund od 00:00:00 czasu UTC 1 stycznia 1970 r. Jest reprezentowany przez typ time_t , który jest zwykle 32-bitową liczbą całkowitą ze znakiem (long lub int).
iOS zapewnia - (NSTimeInterval) timeIntervalSince1970 dla obiektów które zwracają liczbę sekund od 00:00:00 GMT 1 stycznia 1970. NSTimeInterval jest typem podwójnej liczby zmiennoprzecinkowej, dzięki czemu uzyskujesz sekundy i ułamki sekundy.
Ponieważ oba mają to samo odniesienie (północ 1 stycznia 1970 UTC) i oba są podane w sekundach, konwersja jest łatwa, przekonwertuj NSTimeInterval na time_t, zaokrąglając lub skracając w zależności od potrzeb:
źródło
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
gdzie piece.piece.last_view toMożesz utworzyć uniksową datę znacznika czasu od daty w następujący sposób:
źródło
UWAGA: - Znacznik czasu musi być w strefie UTC, więc konwertuję nasz czas lokalny na czas UTC.
źródło
Szybki
Zaktualizowano dla Swift 3
Uwagi
timeIntervalSince1970
zwracaTimeInterval
, co jest aliasem typu dlaDouble
.Jeśli chcesz pójść w drugą stronę, możesz wykonać następujące czynności:
źródło
Jeśli chcesz przechowywać ten czas w bazie danych lub wysłać go przez serwer ... najlepiej jest użyć uniksowych znaczników czasu. Oto mały fragment, aby to uzyskać:
źródło
[[NSTimeZone systemTimeZone] secondsFromGMT]]
:? Proszę wyjaśnij trochę.Mój preferowany sposób to po prostu:
źródło
Zgodnie z sugestią @ kexik, używając funkcji czasu UNIX, jak poniżej:
.Jak z mojego doświadczenia - nie używaj timeIntervalS od 1970 roku, podaje znacznik czasu epoki - liczbę sekund, w których jesteś za GMT.Kiedyś występował błąd z [[NSDate date] timeIntervalSince1970], dawał / odejmował czas na podstawie strefy czasowej telefonu, ale wydaje się, że został już rozwiązany.
źródło
pierwszy unixtime 1532278070
drugi unixtime 1532278070.461380
trzeci unixtime 1532278070
źródło
Jeśli potrzebujesz znacznika czasu jako ciągu.
źródło