видит также Crockford "JavaScript: Хорошие Части" для различных других вещей избежать. ( редактирование: предупреждение, он немного строг в некоторых его предложениях как использование "===" по "==", так возьмите их с любой мелкой частицей соленых работ для Вас)
>> "2009-09-24".to_date
=> Thu, 24 Sep 2009
>> "9/24/2009".to_date
=> Thu, 24 Sep 2009
Отлично работает, если дата не указана в каком-то странном формате.
Похоже, ActiveSupport действительно предоставляет методы синтаксического анализа, которые вы ищете (и я тоже искал), в конце концов! - по крайней мере, если строка, которую вы пытаетесь проанализировать, является стандартной датой в формате ISO-8601 (: db
).
Если дата, которую вы пытаетесь проанализировать, уже находится в вашем локальном часовой пояс, это действительно просто!
Time.zone = 'Eastern Time (US & Canada)' # => 'Eastern Time (US & Canada)'
Time.zone.local(2007, 2, 10, 15, 30, 45) # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.parse('2007-02-10 15:30:45') # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.at(1170361845) # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Time.zone.now # => Sun, 18 May 2008 13:07:55 EDT -04:00
Time.utc(2007, 2, 10, 20, 30, 45).in_time_zone # => Sat, 10 Feb 2007 15:30:45 EST -05:00
Ссылки на дополнительную документацию для справки:
ActiveSupport::TimeZone.new('UTC').parse('2009-09-23 09:18:08')
=> Wed, 23 Sep 2009 09:18:08 UTC +00:00