假设我有
> time = Time.zone.now
=> Tue, 03 Apr 2018 09:44:14 EDT -04:00
我想要像
这样的东西> time.set_date_to(Date.parse("2018-04-13"))
> time
=> Tue, 13 Apr 2018 09:44:14 EDT -04:00
这是否存在?
答案 0 :(得分:3)
答案 1 :(得分:0)
跳出MrShemek的回答我monkeypatched Time
:
class Time
def set_date_to(date_or_date_string)
date = date_or_date_string.is_a?(Date) ? date_or_date_string : Date.parse(date_or_date_string)
change(year: date.year, month: date.month, day: date.day)
end
end
这似乎有用
答案 2 :(得分:0)
如果您没有使用Rails项目(或者不想加载active_support
),您可以使用Ruby的Date
库。
有了它,您可以执行基本时间数学运算,如下所示:
require 'date'
d = Time.now.utc.to_datetime # Datetime preserves time and date information
d.next_day(10) # same as d + 10
d.prev_day # same as d - 1
d.prev_month(2) # same as d << 2
d.next_month # same as d >> 1
d.to_time # You can convert back to a Time object if needed.
DateTime
可以处理闰秒/年,但不能处理时区。