ruby-on-rails 使用rails将datetime + timezone输入处理为UTC

ssgvzors  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(123)

Ruby和Rails有很多方法来解析带有时区信息的日期时间,但是缺乏一个集成的机制AFAIK来同时输入这两个信息,然后解析需求使其复杂化。
应用程序以UTC格式保存时间戳,出生日期将有一个时区组件和另一个属性来提供时区的偏移。

t.timestamptz "birth_date"
    t.string "birth_date_tz"

问题是正确处理参数。用户不是以UTC术语思考,而是以给定时区的时钟思考。
因此,以下参数需要首先进行偏移以转换为UTC

Parameters: {"authenticity_token"=>"[FILTERED]", "individual"=>{"birth_date(3i)"=>"1",  
"birth_date(2i)"=>"1", "birth_date(1i)"=>"1987", "birth_date(4i)"=>"01",  
"birth_date(5i)"=>"01", "birth_date_tz"=>"Hawaii",, "birth_location_city"=>"Honolulu"}

并希望避免保存,然后更新。
应如何处理这些问题?

  • (稍后将查看它们,重新翻译tz的偏移量)*
wfypjpf4

wfypjpf41#

是的,显然应用程序无法知道用户输入数据时的时区,尽管您可以在JavaScript中检测到当前浏览器时间的偏移量,但无论如何都无法可靠地将其转换为时区。
所以,是的,在你完成你的任务后,

individual.birth_date.change zone: individual_params[:birth_date_tz]

FWIW,所有被说的出生日期实际上没有时区。如果你出生在纽约的午夜之后,你的生日不是在加州的前一天。

相关问题