从现在开始的1个星期8点

Rus*_*lan 6 ruby ruby-on-rails

我想从现在的早上8点得到一个DateTime.

一周很容易:

DateTime.now + 1.week
Run Code Online (Sandbox Code Playgroud)

如何将结果日期设置为特定时间?

Tom*_*ord 13

有很多方法可以实现这一目标.这是一个:

Time.parse('8am') + 1.week
Run Code Online (Sandbox Code Playgroud)

这是另一个:

DateTime.now.beginning_of_day + 1.week + 8.hours
Run Code Online (Sandbox Code Playgroud)

或者怎么样:

1.week.from_now.beginning_of_day + 8.hours
Run Code Online (Sandbox Code Playgroud)

甚至:

DateTime.now.advance(days: 7).change(hour: 8)
Run Code Online (Sandbox Code Playgroud)


Ste*_*fan 6

[...]从现在开始的1个星期早上8点

我通过以下方式表达:

1.week.from_now.change(hour: 8)
#=> Thu, 12 Oct 2017 08:00:00 CEST +02:00
Run Code Online (Sandbox Code Playgroud)

change 自动将"较小"时间单位(分,秒等)设置为0.