如何在Ruby中添加两周到当前的Time.now?我有一个使用DataMapper的小型Sinatra项目,在保存之前,我有一个填充了当前时间PLUS两周的字段,但是根本不能正常工作.任何帮助是极大的赞赏!我收到以下错误:
NoMethodError at /
undefined method `weeks' for 2:Fixnum
Run Code Online (Sandbox Code Playgroud)
以下是模型的代码:
class Job
include DataMapper::Resource
property :id, Serial
property :position, String
property :location, String
property :email, String
property :phone, String
property :description, Text
property :expires_on, Date
property :status, Boolean
property :created_on, DateTime
property :updated_at, DateTime
before :save do
t = Time.now
self.expires_on = t + 2.week
self.status = '0'
end
end
Run Code Online (Sandbox Code Playgroud)
J-_*_*_-L 65
你没有普通Ruby中那么好的帮手.你可以添加秒:
Time.now + (2*7*24*60*60)
Run Code Online (Sandbox Code Playgroud)
但是,幸运的是,那里有许多日期助手库(或构建自己的;))
Laa*_*aas 53
除了Time中的秒数之外,Ruby Date类还有添加日期和月份的方法.一个例子:
require 'date'
t = DateTime.now
puts t # => 2011-05-06T11:42:26+03:00
# Add 14 days
puts t + 14 # => 2011-05-20T11:42:26+03:00
# Add 2 months
puts t >> 2 # => 2011-07-06T11:42:26+03:00
# And if needed, make Time object out of it
(t + 14).to_time # => 2011-05-20 11:42:26 +0300
Run Code Online (Sandbox Code Playgroud)
Ale*_*yne 21
require 'rubygems'
require 'active_support/core_ext/numeric/time'
self.expires = 2.weeks.from_now
Run Code Online (Sandbox Code Playgroud)
Fel*_*ino 20
您必须使用秒来在日期之间进行计算,但您可以使用Time类作为帮助来获取日期部分元素的秒数.
Time.now + 2.week.to_i
Run Code Online (Sandbox Code Playgroud)
编辑:正如@iain所提到的,你需要Active Support来完成usign 2.week.to_i,如果你不能(或者不想)拥有这种依赖关系,你总是可以使用+运算符来为Time实例添加秒数(时间+数字→时间)这里的文档)
Time.now + (60 * 60 * 24 * 7 * 2)
Run Code Online (Sandbox Code Playgroud)
oyl*_*gul 19
我认为week/weeks是在活动支持数字扩展中定义的
$ ruby -e 'p Time.now'
2011-05-05 22:27:04 -0400
$ ruby -r active_support/core_ext/numeric -e 'p Time.now + 2.weeks'
2011-05-19 22:27:07 -0400
Run Code Online (Sandbox Code Playgroud)
# you have NoMethod Error undefined method
require 'active_support/all'
# Tue, 28 Nov 2017 11:46:37 +0900
Time.now + 2.weeks
# Tue, 28 Nov 2017 11:46:37 +0900
Time.now + 2.week
# Tue Nov 28 11:48:24 +0900 2017
2.weeks.from_now
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70279 次 |
| 最近记录: |