Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何更改时间对象上的日期?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何更改时间对象上的日期?

Ruby on rails 如何更改时间对象上的日期?,ruby-on-rails,ruby,Ruby On Rails,Ruby,如果我有 > 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 这是否存在?您可以这样做: time = Time.zone.now.change(year: 2018, month: 4,

如果我有

> 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

这是否存在?

您可以这样做:

time = Time.zone.now.change(year: 2018, month: 4, day: 13)

以下是您可以执行的操作:

time = Time.zone.now.change(year: 2018, month: 4, day: 13)
以下是我在《时间》杂志上得到的答案的开始:

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
这似乎起作用了

从我的答案上跳下来时间:

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

如果您不使用Rails项目(或不希望加载
活动\u支持
),则可以使用Ruby的
日期

使用它,您可以执行基本的时间数学,如下所示:

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. 
需要“日期”
d=Time.now.utc.to_datetime#datetime保留时间和日期信息
d、 第二天(10)#与d+10相同
d、 上一天#与d-1相同
d、 上个月(2)#与d>1相同
d、 如果需要,可以将时间转换回时间对象。

DateTime
可以处理闰秒/年,但不能处理时区。

如果您没有使用Rails项目(或不希望加载
active\u支持
),可以使用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. 
需要“日期”
d=Time.now.utc.to_datetime#datetime保留时间和日期信息
d、 第二天(10)#与d+10相同
d、 上一天#与d-1相同
d、 上个月(2)#与d>1相同
d、 如果需要,可以将时间转换回时间对象。

DateTime
可以处理闰秒/年,但不能处理时区。

FYI:您可以使用
Time.current
而不是
Time.zone.now
FYI:您可以使用
Time.current
而不是
Time.zone.now