Ruby:如何在午夜舍入Time变量

zsohkypk  于 2023-08-04  发布在  Ruby
关注(0)|答案(4)|浏览(112)

在Ruby中,我如何在午夜舍入一个时间变量?
例如,如何获取以下Time变量:

2020-01-07 00:00:00 UTC

字符串
从这一个?

2020-01-07 02:33:01 UTC


谢啦,谢啦

whhtz7ly

whhtz7ly1#

Time示例一经创建,便无法修改。您必须创建一个 * 新的 * 示例,例如给定:

require 'time'

t = Time.parse('2020-01-07 02:33:01 UTC')
#=> 2020-01-07 02:33:01 UTC

字符串
您可以呼叫Time.utc来传递对象的年、月和日:

Time.utc(t.year, t.month, t.day)
#=> 2020-01-07 00:00:00 UTC

gfttwv5a

gfttwv5a2#

或者你可以转换为时间到日期。

Time.now.to_date.to_time

字符串

06odsfpq

06odsfpq3#

如果您使用 ActiveSupport,则可以使用Time#change

time_1 = Time.utc(2020, 1, 7, 2, 33, 1)
time_2 = time_1.change(hour: 0, min: 0, sec: 0)
#=> 2020-01-07 00:00:00 UTC

字符串
或者像Stefan在评论中指出的那样Time#midnight/Time#beginning_of_day

time_2 = time_1.beginning_of_day
#=> 2020-01-07 00:00:00 UTC

fgw7neuy

fgw7neuy4#

虽然这个问题是相当不清楚,只是以防任何人最终在这里寻找(像我一样)的东西,将Map任何时间到最近的午夜(即。pre-midnight to previous midnight,andpost-midnight to next midnight),那么这个应该可以工作:
time = Time.parse("2020-01-07 02:33:01 UTC")(使用问题中给出的示例)

if time.hour >= 12 # any time after midday
  time.end_of_day
else
  time.beginning_of_day
end

字符串

相关问题