ruby-on-rails - Ruby DateTime.new 困惑

标签 ruby-on-rails ruby datetime locale

我仍然对如何在 Ruby 中使用 DateTime 感到有些困惑。我想将 GMT 存储在数据库中,至少我认为我会这样做。但是如何创建可用的本地化日期时间呢?

date = Date.new(2012, 11, 24)
 => #<Date: 2012-11-24 ((2456256j,0s,0n),+0s,2299161j)> 
new_appt = DateTime.new(date.year, date.month, date.day, 10, 0, 0)
 => #<DateTime: 2012-11-24T10:00:00+00:00 ((2456256j,36000s,0n),+0s,2299161j)> 

此 DateTime 对象的 GMT 偏移量为 +00:00。我希望它是 -07:00 或 -08:00 取决于给定日期是否遵守夏令时。我可以添加最后一个参数(+7+8),但如何计算?

有没有办法告诉给定的日期时区偏移量是(或将是)并将其计入 DateTime.new 对象中,以便可以正确存储(和检索)它?

最佳答案

请引用documentationTime了解更多信息。

创建变量时,可以使用Time.local ,它会判断 DST 是否正确。例如,在 3.30 pm 创建约会你可以这样做:(我的本地时间是 CST)

Time.local 2012, 10, 20, 15, 30
=> 2012-10-20 15:30:00 +0800 

存储到数据库时,我建议存储为 UTC,即 variable.utc然后,如果需要再次将其呈现给用户,只需调用 variable.localtime 即可再次。根据内存,这使得在 JavaScript 等其他语言中使用时间变得非常简单。

关于ruby-on-rails - Ruby DateTime.new 困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12983175/

相关文章:

ruby-on-rails - Rails,给定一个项目数组,如何在控制台中删除

sql - 使用 created_at 选择记录范围

c# - 如何在区域设置中显示 0 值的日期?

php - 如何在Codeigniter和Mysql中同步日期时间字段

ruby-on-rails - Rails heroku 应用程序上的 Robots.txt 文件未更新

mysql - Ruby On Rails 很慢...?

ruby-on-rails - 清除某个字符后的字符串

ruby - 如何包含扩展类方法并正确引用类 var 的模块

c++ - 比较两个std::chrono::time_point实例时出错

javascript - Ruby on Rails - AJAX 问题(ActionController :UnknownFormat)