如何从以下字符串创建Ruby日期对象?
DD-MM-YYYY
Answers:
Date.parse('31-12-2010')
因为在美国它们的日期是倒数,所以重要的是不要简单地使用它,Date.parse()
因为您会发现2001年9月11日在美国是2001年9月11日,在世界其他地方是2001年11月9日。为了完全明确地使用Date::strptime(your_date_string,"%d-%m-%Y")
正确解析格式的日期字符串dd-mm-yyyy
。
尝试以下操作以确保:
>irb
>> require 'date'
=> true
>> testdate = '11-09-2001'
=> "11-09-2001"
>> converted = Date::strptime(testdate, "%d-%m-%Y")
=> #<Date: 4918207/2,0,2299161>
>> converted.mday
=> 11
>> converted.month
=> 9
>> converted.year
=> 2001
有关其他strptime
格式,请参见http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html
另外,我始终确保将我的基本时区设置为:utc
我的网站是否要处理任何日期,并Javascript
在客户端使用它显示本地时间。
您可以使用Time#parse。
Time.parse("20-08-2010")
# => Fri Aug 20 00:00:00 +0200 2010
但是,因为Ruby可以将日期解析为“ MM-DD-YYYY”,所以最好的方法是使用DateTime#strptime,您可以在其中指定输入格式。
这样,您可以从这样的字符串中获取时间Object:
t = Time.parse "9:00 PM"
=> 2013-12-24 21:00:00 +0530
t = Time.parse "12:00 AM"
=> 2013-12-24 00:00:00 +0530
但是Ruby将此解析为Date!
因此,您可以将列用作字符串。
add_column :table_name, :from, :string, :limit => 8, :default => "00:00 AM", :null => false
add_column :table_name, :to, :string, :limit => 8, :default => "00:00 AM", :null => false
您可以将字符串对象分配给属性,
r.from = "05:30 PM"
r.save
并解析用于获取时间对象的字符串,
Time.zone.parse("02:00 PM")
.mday
和之间的区别是.day
什么?