【发布时间】:2015-03-27 17:54:08
【问题描述】:
我正在使用 Ruby 中的日期字符串,并想确定字符串是否与时区一起传递(除了简单地解析文本之外)。如果没有提供时区,我想根据其他因素将其转换为某个时区。
例子:
DateTime.parse("2014-01-01T23:59:00")
=> #<DateTime: 2014-01-01T23:59:00+00:00 ((2456659j,86340s,0n),+0s,2299161j)>
DateTime.parse("2014-01-01T23:59:00Z")
=> #<DateTime: 2014-01-01T23:59:00+00:00 ((2456659j,86340s,0n),+0s,2299161j)>
DateTime.parse("2014-01-01T23:59:00PST")
=> #<DateTime: 2014-01-01T23:59:00-08:00 ((2456660j,28740s,0n),-28800s,2299161j)>
问题在于,当一个指定“Zulu”而另一个指定“Zulu”时,解析“2014-01-01T23:59:00”和“2014-01-01T23:59:00Z”(使用 Zulu)会产生相同的结果不是。如果没有提供区域,我确定默认行为是假定 UTC。
【问题讨论】:
-
Z 和 UTC 不是同一个时区吗?我不明白这个问题
-
是的,但我想确定一个字符串何时不指定任何时区('Z' 或其他)
-
知道了,您是否假设输入始终采用 ISO 8601 格式?
-
我会假设,正确。我意识到我可以只使用 .end_with?但我想知道是否有更优雅的方式。
标签: ruby-on-rails ruby date datetime