如何从string创build一个Rubydate对象?
如何从下面的string创build一个Rubydate对象?
DD-MM-YYYY
Date.parse('31-12-2010')
另外Date#strptime(str, format)
。
因为在美国他们得到的date倒退了,所以不要简单地使用Date.parse()
是很重要的,因为你会发现2001年9月11日可能在2001年9月11日在美国和2001年11月9日在世界其他地方。 要完全明确地使用Date::strptime(your_date_string,"%d-%m-%Y")
来正确分析格式为dd-mm-yyyy
的datestring。
试试这个确定:
>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
如果我的网站将要处理任何date,并在客户端使用Javascript
显示当地时间。
您可以使用时间#分析 。
Time.parse("20-08-2010") # => Fri Aug 20 00:00:00 +0200 2010
但是,因为Ruby可以将dateparsing为“MM-DD-YYYY”,所以最好的方法是使用DateTime#strptime来指定input格式。
像这样你可以从这样的string获得时间对象:
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
但Rubyparsing这个date!
所以你可以使用列作为string。
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
您可以将string对象分配给该属性,
r.from = "05:30 PM" r.save
并parsingstring获取时间对象,
Time.zone.parse("02:00 PM")
我发现这种方法更简单,因为它避免了必须指定parsing器的date格式:
date1 = Time.local(2012,1,20,12,0,0).to_date
对于这个特殊的string格式不是必需的,但是最好的string到时间parsing实用程序我知道是慢性的 ,它可以作为一个gem,约99.9%的人工格式化date/时间的作品。