Closed foton closed 4 months ago
config.time_zone = 'Prague'
# v application.rb
config/environments/*.rb
current_user.time_zone = 'Hawaii'
# kéž by
utc_before_cz_daylightsaving_change=Time.utc(2024,3,31,0,59)
utc_after_cz_daylightsaving_change=Time.utc(2024,3,31,1,00)
before_daylightsaving_change.in_time_zone("Prague")
# => Sun, 31 Mar 2024 01:59:00.000000000 CET +01:00
after_daylightsaving_change.in_time_zone("Prague")
# => Sun, 31 Mar 2024 03:00:00.000000000 CEST +02:00
čtení: časy z DB (UTC) do lokálního času
1) I18n.l(time_utc.in_time_zone)
# bere application.config.time_zone
2) I18n.l(time_utc.in_time_zone(current_user.time_zone))
# bere application.config.time_zone
3) I18n.l(Time.use_zone(current_user.time_zone) { time_utc })
# lze využít v around_action
filteru
4) gem local_time(time_utc)
# bere time zone podle prohlížeče, nevyužitelné pro exporty do souborů
zápis: čas od uživate do UTC
1) form helper time_field_tag :some_time
, čas je poslán jako string , takže se stejně musí parsovat (ale to možná udělá ActiveRecord)
default bude podle aplikace
config.time_zone
.Problémy můžou nastat pro kešování, pokud budem vypisovat přímo lokalizovaný čas. V tu chvíli by bylo lepší využít https://github.com/basecamp/local_time ( v html je UTC a JS ho přepíše podle lokálního času prohlížeče).
To ale neřeší zadávání časů uživatelem .
good to read: https://thoughtbot.com/blog/its-about-time-zones