gpt4 book ai didi

mysql - 以最有效的方式获取铁路中的时差(以分钟为单位)

转载 作者:行者123 更新时间:2023-11-29 12:15:26 25 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我有一个名为“Schedule”的表,其中包含名为“arrival”的字段,我在其中输入了时间,我猜由于某种原因,它默认以以下格式存储在 UTC 中

2000-01-01 07:37:00 UTC

在我的 Controller 中,当我执行类似 Time.now 的操作时,我会得到这样的时间

2015-04-26 23:35:46 -0400

我的问题是需要在同一区域或其他地方获得两次时间,以便我可以计算差异。

我知道我可以在 Time.now 上添加 4 小时并使其成为 UTC,但我如何在几分钟内获得它们之间的差异?我想到了一个愚蠢的技巧,如果我向 Time.now 添加 4 小时,它就会变成 utc,然后减去两者之间的差异。然而,存储在数据库中的时间有 2001 年日期,而这个有 2015 年日期,那么它可以工作吗?我会建议你的答案或方法。谢谢

最佳答案

这不是问题,Ruby 在内部处理时区。

time1 = DateTime.parse('2000-01-01 10:00:00 UTC')
time2 = DateTime.parse('2000-01-01 10:00:00 -0100')
time2 - time1
# => (1/24)

即Ruby 已经知道 UTC 中的同一时间与 -0100 中的同一时间相差一小时。如果您允许的话,时差运算符已经在做正确的事情了:)

但是,DateTime 是 Ruby,Time 是 C - 前者有更好的 API 并且与数据库配合得很好,但后者更快。

编辑:这是一个使用时间的示例,仍然相同:

time1 = Time.new(2000, 1, 1, 10, 0, 0, "+00:00")
time2 = Time.new(2000, 1, 1, 10, 0, 0, "-01:00")
time2 - time1
# => 3600.0

编辑:年份 2999 2000

关于mysql - 以最有效的方式获取铁路中的时差(以分钟为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29886778/

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