如何从字符串创建Ruby日期对象?

ben*_*ben 67 ruby date

如何从以下字符串创建Ruby日期对象?

DD-MM-YYYY
Run Code Online (Sandbox Code Playgroud)

Dav*_*Sag 31

因为在美国,他们将日期倒退,重要的是不要简单地使用,Date.parse()因为你会发现2001年9月11日在美国和2001年11月9日在世界其他地方可以使用9/11/2001.要完全明确地使用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
Run Code Online (Sandbox Code Playgroud)

有关其他strptime格式,请参阅http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html

另外,我总是确保将基本时区设置为:utc我的网站将处理任何日期,并Javascript在客户端使用以显示当地时间.


Sim*_*tti 16

您可以使用Time#parse.

Time.parse("20-08-2010")
# => Fri Aug 20 00:00:00 +0200 2010
Run Code Online (Sandbox Code Playgroud)

但是,因为Ruby可以将日期解析为"MM-DD-YYYY",所以最好的方法是使用DateTime#strptime,您可以在其中指定输入格式.


Jon*_*der 5

如果您可以控制字符串中日期的格式,则Date.parse可以在国际上使用YYYY-MM-DD( ISO 8601 ) 格式的字符串正常工作:

Date.parse('2019-11-20')
Run Code Online (Sandbox Code Playgroud)