Cze mam taki problem,
W aplikacji mam ustawiony config.time_zone = "Europe/Warsaw"
I teoretycznie jest fajnie czas zapisuje się w UTC aktualnie różnica 2h wyswietla się dobrze jak przekazuje go przez Railsy,
ale jak wyswietlam go poprzez JS ( Vue.js np. w formularzu z edycja modelu lub liscie skladajacej sie ze wszystkich modelow ) lub w szablonach z hbs to dostaję na widokach czas UTC. I tu za bardzo nie wiem jak temu zaradzic. Myslalem nad ustawieniem czasu w bazie na “Warszawski”, ale nie wiem czy to będzie działac. Tak samo dziwne jest dla mnie to że:
W JS-ie mam:
new Date
Tue Oct 02 2018 14:58:12 GMT+0200 (czas środkowoeuropejski letni)
Problem mam taki, że jak korzystam z widoków railsowych to wszystko działa tak jak należy. Jak w bazie mam zapisana godzinę 14:00 UTC to na widoku mam 16:00, ale gdy widok obsługuję przez Vue.js, albo mam szablony w hbs to to na widokach mam 14:00 zamiast 16:00 naprzykład gdy mam widok z edycja modelu w Vue.js i nie wiem jak temu zaradzic myslalem nad ustawieniem stefy czasowej w bazie od razu na “Warszawska”
Czyli operując na obiekcie daty offset jest już poprawnie liczony (pisząc to jest +2 do utc).
Porównywanie tego z datą otrzymaną przez new Date w js przeglądarki jest trochę ryzykowne. Możesz sobie lokalnie przestawić datę w systemie i już Ci się to rozjedzie.
Pytanie: jak w ogóle przekazujesz datę do reactoweg widoku?
Tworzę później z niego obiekt Js-owy Date i dodawany jest automatycznie do niego offset przegladarki, czyli np zapisuje sobie w bazie dzisiejsza date z godzina 17:00, ale w komponentach Vue dostaję 19:00. Railsy wywietlaja mi normalnie 17:00. Tak działa z config.time_zone = "Europe/Warsaw" jak to usunę z configa to dostaję taki sam rezultat w bazie mam zapisan godzinę 17:00 i jeżeli widok mam obsługiwany przez Railsy to dostaję 17:00, jak przez JS to dodaje mi się offset przegldarki i dostaję 19:00.
A możesz pokazać kod js w którym tworzysz ten obiekt daty? Bo coś takiego daje dobry rezultat u mnie (chrome, mac os):
ruby
[6] pry(main)> date = Time.zone.now
=> Wed, 03 Oct 2018 13:38:25 CEST +02:00
[7] pry(main)> puts({ date: date }.to_json)
{"date":"2018-10-03T13:38:25.317+02:00"}
i potem konwersja do obiektu w js
json = JSON.parse('{"date":"2018-10-03T13:38:25.317+02:00"}')
=> {date: "2018-10-03T13:38:25.317+02:00"}
new Date(json.date)
=> Wed Oct 03 2018 13:38:25 GMT+0200 (Central European Summer Time)
@radarek Dobra znalazłem bład paramsy z data łaczyłem w string i zapisywałem w bazie i domyslnie dodawał offset 0. Dodałem teraz do stringa z data .in_time_zone("Europe/Warsaw") i w configu: