W Railsach jestem nieco zdezorientowany w sprawie wskazówek, kiedy używać DateTime.now.utc i Time.current. Wydaje się, że istnieją różne opinie na temat tego, co jest najlepsze, szczególnie w różnych wersjach.Kiedy w Railsach należy używać `DateTime.now.utc` vs.` Time.current.utc`?
Wygląda DateTime.now.utc
tworzy znacznik czasu z UTC przesunięcia zera, natomiast Time.current.utc
tworzy znacznik czasu ze strefy czasowej UTC . Wydaje się to subtelnym rozróżnieniem, ale w wielu przypadkach jest to bardzo ważne (np. Obliczenia DST).
Kiedy należy użyć DateTime.now.utc
i kiedy należy użyć Time.current.utc
? Czy istnieje jakiś powód, aby używać DateTime.now.utc
zamiast Time.current.utc
?
Czy możesz podać przykład tego, gdzie ma to wpływ? Biorąc pod uwagę, że UTC nie ma żadnych zmian w świetle dziennym, z pewnością ma znaczenie tylko wtedy, gdy zaczniesz korzystać z innych stref czasowych ... (Nie znam Rubiego, ale zrobiłem sporo rzeczy z datą/czasem, więc z większym zapleczem mogę ci pomóc.) –
@JonSkeet: Nie wiem, czy to robi różnicę. (Właśnie dlatego pytam, którego powinienem używać!) 'DateTime.now.utc' najpierw wywołuje' DateTime.now', a następnie odwraca przesunięcie UTC, aby uzyskać czas "UTC". Zauważ, że nie tłumaczy on pomiędzy _time zones_, a raczej pomiędzy _offsets_. Czy może to być problematyczne w skrajnych przypadkach, np. Niesławny przykład z lat 1927-1928 w Szanghaju? –
@JonSkeet: Jeśli nie jesteś w UTC, to 'DateTime.now' i' Time.current' zarówno wytwarzają czas lokalny w czymś innym niż UTC. Innymi słowy, wydają się różnić w swoich podejściach dotyczących tego, w jaki sposób przekształcają się w UTC - robi się to przez proste zastosowanie offsetu; drugi robi to poprzez ponowne wykonanie obliczeń strefy czasowej w nowej strefie czasowej UTC. –