gpt4 book ai didi

ruby-on-rails - 为传入的 xml 数据设置时区

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:27 24 4
gpt4 key购买 nike

我从未明确设置时区的 API 获取日期时间字段。当我将其放入数据库时​​,它假设日期时间必须是格林威治标准时间,但时区实际上是芝加哥时间。 (我说芝加哥时间,因为我仍然不确定这个 API 是否会影响 DST。)在将它添加到数据库之前,我将这个时间转换为 GMT 的最佳方法是什么?

这是我所指节点之一的 XML 示例:

<FromDateTime>2011-03-17 08:00:00</FromDateTime>

在 Ruby 中,我使用它来将这条记录添加到数据库中。

:starttime => DateTime.parse(row.at_xpath("FromDateTime/text()").to_s),

我认为我需要做的是将 CST 和 GMT 之间的时差添加到最后一个 Ruby 调用中,对吗?我该怎么做?

谢谢!

最佳答案

你能用时间代替吗? DateTime 不支持夏令时。时间自动设置为给定日期/时间的本地 GMT 偏移量,并在需要时设置 DST。

irb(main):014:0> require 'time'
irb(main):015:0> Time.parse('2011-03-17 08:00:00')
=> Thu Mar 17 08:00:00 -0400 2011
irb(main):022:0> Time.parse('2011-03-17 08:00:00').dst?
=> true

这里是标准时间的情况(我在美国东部时间)

irb(main):025:0> Time.parse('2011-01-17 08:00:00')
=> Mon Jan 17 08:00:00 -0500 2011
irb(main):023:0> Time.parse('2011-01-17 08:00:00').dst?
=> false

如果您使用的是 ActiveSupport http://api.rubyonrails.org/classes/DateTime.html您可以设置为任意时区:

irb(main):039:0> Time.zone = 'America/Chicago'
=> "America/Chicago"
irb(main):040:0> Time.parse('2011-03-17 08:00:00')
=> Thu Mar 17 08:00:00 -0400 2011

关于ruby-on-rails - 为传入的 xml 数据设置时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com