Jak uzyskać znacznik czasu UNIX (liczba sekund od 1970 GMT) z obiektu Date w aplikacji Rails?
Wiem, że Time#to_i
zwraca znacznik czasu, ale zrobienie Date#to_time
i otrzymanie znacznika czasu powoduje coś, co jest wyłączone o około miesiąc (nie jestem pewien, dlaczego ...).
Jakakolwiek pomoc się przyda, dzięki!
Edycja: OK, chyba to wymyśliłem - przetwarzałem datę kilka razy w pętli i za każdym razem data była nieco przesuwana z powodu niedopasowania strefy czasowej, co ostatecznie doprowadziło do tego, że mój znacznik czasu był miesiącem wolnym. Mimo to chciałbym wiedzieć, czy można to zrobić bez polegania na tym Date#to_time
.
źródło
to_utc
date.to_time.utc
prawdopodobnie to miał na myśli.Gdy próbuję, otrzymuję następujące informacje:
Różnica między tymi dwiema liczbami wynika z faktu, że
Date
nie przechowują godzin, minut ani sekund bieżącego czasu. Konwersja aDate
na aTime
spowoduje, że tego dnia będzie północ.źródło
Sugerowane opcje użycia
to_utc
lubutc
ustawienia lokalnego przesunięcia czasu nie działają. Dla mnie stwierdziłem, że używanieTime.utc()
działa poprawnie, a kod wymaga mniej kroków:vs
Oto, co dzieje się, gdy wywołujesz utc po użyciu
Date
....... więc wyraźne wywołanie
to_i
da niewłaściwy znacznik czasu.źródło
Rozwiązanie dla Ruby 1.8, gdy masz dowolny obiekt DateTime:
źródło
źródło