ruby - 如何将 N 天添加到时间 T(考虑夏令时)?

标签 ruby time

我有一个时间对象 T。向 T 添加 N 天的合理方法是什么?

我想出的最好的感觉有点折磨:

require 'date'
def add_days(time, days)
  time.to_date.next_day(days).to_time
end

P.S.:如果您在美国,正确答案必须满足:

add_days(Time.new(2013, 3, 10, 0), 1) == Time.new(2013, 3, 11, 0)

如果您在欧盟,则正确答案必须满足:

add_days(Time.new(2013, 3, 31, 0), 1) == Time.new(2013, 4, 1, 0)

P.P.S:这是一个 Ruby 问题,而不是 Rails 问题。

最佳答案

Time 有一个 + method接受秒。

N = 3

t = Time.now + N * 86400 # 24 * 60 * 60 

或者,如果您引入 ActiveSupport,则更容易

require 'active_support/core_ext'

t = Time.now + N.days

显然你可以制作自己的助手

class Fixnum
  def days
    self * 86400
  end
end

t = Time.now # => 2013-01-31 16:06:31 +0700

t + 3.days # => 2013-02-03 16:06:31 +0700

关于ruby - 如何将 N 天添加到时间 T(考虑夏令时)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14621878/

相关文章:

arrays - 运算符 Array#<< 以 reduce 的简写形式失败

audio - 在 Haxe (NME) 中对节奏游戏的节拍计时最准确的方法是什么?

java - 如何在控制台打印 "Today is May 22, 2014 and it is 2:04 pm"?

Javascript 如何在运行下一行代码之前等待 x 秒?

ruby-on-rails - 放置调试语句

python - Ruby optparse 限制

ruby - Ruby 中 Enumerator 类的用途是什么

ruby-on-rails - Minitest:相关 AR 模型的固定装置在运行测试时导致 ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation

mysql - Rails 仅以以下格式存储和检索时间 : hh:mm:ss

javascript - 计算带小数的日期之间的天数