How do I create a Ruby date object from a string?

2020-02-17 06:02发布

How do I create a Ruby date object from the following string?

DD-MM-YYYY

标签: ruby date
7条回答
劳资没心,怎么记你
2楼-- · 2020-02-17 06:49

Because in the USA they get the dates backwards, it's important not to simply use Date.parse() because you'll find 9/11/2001 can be 11 September 2001 in the USA and 9 November 2001 in the rest of the world. To be completely unambiguous use Date::strptime(your_date_string,"%d-%m-%Y") to correctly parse a date string of format dd-mm-yyyy.

Try this to be sure:

>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

For other strptime formats see http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.html

Also I always make sure I set my base timezone to :utc if my website is going to be handling any dates, and use Javascript on the client side to display local times.

查看更多
登录 后发表回答