如何在 Rails 中将当前时间添加 10 天

Posted

技术标签:

【中文标题】如何在 Rails 中将当前时间添加 10 天【英文标题】:How to add 10 days to current time in Rails 【发布时间】:2011-06-06 23:15:39 【问题描述】:

我尝试做类似的事情

Time.now + 5.days

但这不起作用,尽管我隐约记得看到并印象深刻,能够做类似2.years 之类的事情。

如何在 Rails 3 中做到这一点?

【问题讨论】:

应该可以。你遇到了什么错误? 应该可以。当您在 Rails 中时,Time.zone.now 听起来更合适 【参考方案1】:

这绝对有效,我在需要为当前日期添加天数的任何地方都使用它:

Date.today + 5

【讨论】:

【参考方案2】:

在 Ruby 上试试这个。 它将返回未来指定天数的新日期/时间

DateTime.now.days_since(10)

【讨论】:

【参考方案3】:

在 Rails 上试试这个

Time.new + 10.days 

在 Ruby 上试试这个

require 'date'
DateTime.now.next_day(10).to_time

【讨论】:

【参考方案4】:

其他一些选项,仅供参考

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

只列出我知道的所有选项:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

那么现在,如果我们关心时区,它们之间有什么区别:

[1, 4] 有系统时区 [2, 3] 配置 Rails 应用程序的时区 [5] 仅日期,结果中不包含时间

【讨论】:

【参考方案5】:

daysyears 等是 Active Support 的一部分,所以这在 irb 中不起作用,但它应该在 rails console 中起作用。

【讨论】:

是的 - 恰到好处。在香草红宝石中无法做到这一点。 也适用于 irb。如果您安装了 gem,只需在会话开始时或使用它的命令之前执行 require 'active_support/time'【参考方案6】:

使用

Time.now + 10.days

甚至

10.days.from_now

两者都绝对有效。您确定您使用的是 Rails 而不仅仅是 Ruby?

如果你肯定在 Rails 中,你想从哪里运行它?请注意,必须加载 Active Support。

【讨论】:

@yuval 它适用于 rails 而不是 ruby​​..认为您已经掌握了它,但只是为了帮助他人 这太棒了。我爱我一些 Ruby 和 Rails。 有细微的差别。 Time.now + 10.days 总是选择您的系统时区,而 10.days.from_now 将选择 UTC 时区,如果在 rails 配置中没有设置任何内容。 一般情况下,最好用Time.zone.now代替Time.now

以上是关于如何在 Rails 中将当前时间添加 10 天的主要内容,如果未能解决你的问题,请参考以下文章

在文件夹中存在的多个文件中将日期部分动态替换为当前日期 -15 天

如何将 1 天添加到当前日期?

js如何得到当前时间再加几天并且让时间自动变成下一年或者下一个月 例如: 2012-12-11加上30天 2013-1-10

如何在 Rails 应用程序中将法拉第请求正文添加到 Datadog 跟踪中

Rails 4:如何使用 jQuery 为当前页面设置导航样式

如何在codeigniter的当前日期插入天间隔?