我有一张表格,其中包含一个日期字段。如何使用控制台保存日期?我尝试了以下代码:
event = Event.create(name:"Concert", date: '2016-08-20', location:'Portland', state:'OR')
但是,我得到了一个无效的八进制数字错误。
我有一张表格,其中包含一个日期字段。如何使用控制台保存日期?我尝试了以下代码:
event = Event.create(name:"Concert", date: '2016-08-20', location:'Portland', state:'OR')
但是,我得到了一个无效的八进制数字错误。
你需要传入一个实际的Date对象,你可以使用Date.parse
方法从字符串中获取它:
event = Event.create(name: "Concert", date: Date.parse('2016-08-20'), location: 'Portland', state: 'OR')
请注意,我已经将您的日期重写为不同格式。 MM / DD / YYYY
格式在不同的语言环境中 不 具有可移植性,因此我强烈建议您使用 YYYY-MM-DD
(ISO 8601 格式)。>> foo = Foo.create date: "20/8/2016"
(0.0ms) begin transaction
SQL (1.0ms) INSERT INTO "foos" ("date") VALUES (?) [["date", Sat, 20 Aug 2016]]
(0.9ms) commit transaction
#<Foo id: 1, date: "2016-08-20">
>> foo.date
Sat, 20 Aug 2016
ActiveSupport提供了对字符串类的核心扩展,用于将字符串转换为日期、时间和日期时间。在Rails控制台中进行测试时,这可能是可以接受的,并且更方便。
在应用程序本身中利用该扩展(而不是使用 Date.parse
显示解析)完全取决于您和您的团队。
从源代码中:
"1-1-2012".to_date # => Sun, 01 Jan 2012
"01/01/2012".to_date # => Sun, 01 Jan 2012
"2012-12-13".to_date # => Thu, 13 Dec 2012
"12/13/2012".to_date # => ArgumentError: invalid date
为了全面,以下是String#to_time
的示例:
"13-12-2012".to_time # => 2012-12-13 00:00:00 +0100
"06:12".to_time # => 2012-12-13 06:12:00 +0100
"2012-12-13 06:12".to_time # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time # => 2012-12-13 06:12:00 +0100
"2012-12-13T06:12".to_time(:utc) # => 2012-12-13 06:12:00 UTC
"12/13/2012".to_time # => ArgumentError: argument out of range
String#to_datetime
方法:"1-1-2012".to_datetime # => Sun, 01 Jan 2012 00:00:00 +0000
"01/01/2012 23:59:59".to_datetime # => Sun, 01 Jan 2012 23:59:59 +0000
"2012-12-13 12:50".to_datetime # => Thu, 13 Dec 2012 12:50:00 +0000
"12/13/2012".to_datetime # => ArgumentError: invalid date
试试看这个:
date = Date.parse('3rd Feb 2001') ####=> #<Date: 2001-02-03 ...>
Reference: Date class