Как создать объект даты Ruby из строки?
Как создать объект даты Ruby из следующей строки?
DD-MM-YYYY
6 ответов:
Date.parse('31-12-2010')
как вариант
Date#strptime(str, format)
.
потому что в США они получают даты назад, важно не просто использовать
Date.parse()
потому что вы найдете 9/11/2001 может быть 11 сентября 2001 года в США и 9 ноября 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
другие
strptime
форматы см. http://pubs.opengroup.org/onlinepubs/009695399/functions/strptime.htmlтакже я всегда удостоверяюсь, что установил свой базовый часовой пояс в
:utc
если мой сайт будет вести любые даты, и использоватьJavascript
на стороне клиента для отображения местного времени.
можно использовать время#распарсить.
Time.parse("20-08-2010") # => Fri Aug 20 00:00:00 +0200 2010
однако, поскольку Ruby может разобрать дату как "MM-DD-YYYY", лучший способ-пойти с DateTime#strptime где можно указать формат ввода.
как это вы можете получить объект времени из строки, как это:
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
но Рубин разбирает это как дату!
таким образом, вы можете использовать столбец в качестве строки.
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")
Я нахожу этот подход более простым, так как он позволяет избежать необходимости указывать формат даты для парсера:
date1 = время.местные(2012, 1, 20, 12, 0, 0).даты
не обязательно для этого конкретного формата строки, но лучшая строка для анализа времени утилита, которую я знаю, это хронический который доступен как драгоценный камень и работает около 99,9% usecases для человеческих форматированных дат/времен.