【问题标题】:Rails get Date part of DateTime with Time ZoneRails 使用时区获取 DateTime 的 Date 部分
【发布时间】:2011-04-10 00:07:09
【问题描述】:

我正在尝试使用以下语法在 rails 3 中执行查询:CourseOrder.where("DATE(ordered_at) = ?", date)

我的问题是 rails 会在 UTC 中保存所有时间,因此在我的时区 (+2) 中 0:33 是 4 号,但在 UTC 中是 3 号。有没有办法用时区查询 DateTime 的日期部分?

【问题讨论】:

  • 如何将日期转换为 UTC 而不是将ordered_at 转换为本地时间? stackoverflow.com/questions/755669/…
  • 如何将日期转换为另一个时区?我只是看到了转换日期时间或时间的方法

标签: ruby-on-rails ruby datetime time


【解决方案1】:

不要使用日期,而是这样做:

time = DateTime.civil_from_format(:local, 2011, 4, 9)
CourseOrder.where("ordered_at > ? AND ordered_at < ?", time - 1.day, time)

您正在存储日期时间,因此请查询它而不是尝试使用不考虑时区的日期。

【讨论】:

  • 问题是,我从客户那里得到一个约会。似乎我不得不说,你提供给我的日期必须是 UTC,而且一切都很酷
【解决方案2】:

通过更改我比较的值解决了这个问题。

我有一个日期值,现在我将一个日期值与一个日期值进行比较,这比将日期值与必须失败的日期时间值进行比较要好。 感谢您引导我走向正确的方向

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2010-10-09
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多