【发布时间】:2015-04-27 03:39:29
【问题描述】:
在我的 Rails 应用程序中,我有一个名为 Schedule 的表,其中包含一个名为到达的字段,我在其中输入了时间,我猜出于某种原因它默认以以下格式存储在 UTC 中
2000-01-01 07:37:00 UTC
在我的控制器中,当我执行 Time.now 之类的操作时,我会得到这样的时间
2015-04-26 23:35:46 -0400
我的问题是需要两次都在同一个区域或其他东西,这样我才能计算出差异。
我知道我可以在 Time.now 上添加 4 小时并使其成为 UTC,但我仍然如何在几分钟内获得它们之间的差异?我想到了一个愚蠢的技巧,如果我将 4 小时添加到 Time.now 它将变为 UTC,然后减去两者之间的差异。但是存储在 db 中的时间有 2001 日期,而这个有 2015 日期,所以它会工作吗?我会建议您的答案或方法。谢谢
【问题讨论】:
-
“由于某种原因它被存储在 UTC”是 Rails 中的标准行为。 Time 和 DateTime 始终转换为 UTC 并作为 UTC 存储在数据库中。
-
它怎么会存储日期 2000 ?我不明白
-
是的,错误的年份绝对不是标准行为。您是使用 MySQL Workbench 直接查看数据库,还是通过您的应用程序检查日期?如果是这样,您确定您没有在存储日期之前对其进行操作吗?
标签: mysql ruby-on-rails ruby