首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:导入时间戳、不同时区和夏令时

Rails:导入时间戳、不同时区和夏令时
EN

Stack Overflow用户
提问于 2014-05-21 10:23:29
回答 1查看 910关注 0票数 2

我的任务是将多个数据导入到rails应用程序中。旧数据库中的所有数据都在此日期以德国实际时间的时间戳存储。我现在想在世界协调时存钱。

例如,在数据库中,德国日期存储为:

  1. 2013-06-01 10:44:00
  2. 2013-11-01 10:44:00

在UTC中是正确的,并且应该在我的Rails数据库中,如:

  1. 2013-06-01 08:44:00
  2. 2013-11-01 09:44:00

因为6月1日德国的CEST是UTC+2,11月1日是UTC+1。

没有我的问题:我知道如何告诉Ruby时区,但是夏令时呢?

代码语言:javascript
运行
复制
Time.parse ’#{timestamp} CEST’ 

会导致

  1. Time.parse‘2013-06-01 10:44:00 CEST’ 将正确且正确地将时间节省为08:44 UTC在我的数据库中。
  2. Time.parse‘2013-11-01 10:44:00 CEST’ 也会把它保存为08:44世界协调时--这是错误的,应该是09:44 .

这是可以理解的,因为我告诉Ruby,11月1日的日期是在CEST,当然是假的,它的CET。(用Time.parse‘.CET‘也会导致相反的错误)。

如何告诉根据夏令时间自动确定使用哪个时区?

类似于Time.parse‘{时间戳}德国’可能吗?

否则,我需要检查->,如果3月30日至10月26日之间使用CEST,否则的CET -这似乎是复杂的我.

任何帮助都是徒劳无功的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 10:34:53

一个区域是否有DST是在时区中编码的。

确保设置了Time.zone,然后使用Rails的Time.zone.parse解析它。下面是一个您可以在Rails控制台中尝试的示例:

代码语言:javascript
运行
复制
> Time.zone = 'Berlin'
=> "Berlin"
> Time.zone.parse('2014-05-21 08:09:10')
=> Wed, 21 May 2014 08:09:10 CEST +02:00
> Time.zone.parse('2014-11-21 08:09:10')
=> Fri, 21 Nov 2014 08:09:10 CET +01:00

您可以看到同一时间被解析为不同的偏移量,这取决于它是否在DST内。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23780437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档