Potrzebuję przekonwertować obiekt Date na obiekt TimeWithZone reprezentujący początek tego dnia w danej strefie czasowej.Konwertowanie obiektu Date na TimeWithZone
następujące podejście działa, ale wydaje się zbyt zawiłe, gdyż wymaga mi przekonwertować datę na ciąg znaków:
?> date = Date.parse("2010-02-17")
=> Wed, 17 Feb 2010
>> ActiveSupport::TimeZone['Eastern Time (US & Canada)'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 EST -05:00
>> ActiveSupport::TimeZone['UTC'].parse(date.to_s)
=> Wed, 17 Feb 2010 00:00:00 UTC 00:00
Czy istnieje lepszy sposób mi brakuje?
EDIT: Ludzie sugerują odmiany:
?> date.to_datetime.in_time_zone('Eastern Time (US & Canada)').beginning_of_day
=> Tue, 16 Feb 2010 00:00:00 EST -05:00
Jak widać, nie jest to równoważne konwersji, ponieważ na początku lutego 16 EST pozostawia mnie, zamiast na początku 17 lutego EST.
Wygląda na to rozwiązanie może być właściwa droga. –
Edytowałem swoją odpowiedź, aby rozwiązać ten problem. –
Daj sobie rozwiązanie! =) Czas ze strefami czasowymi jest zawsze brudny. – John