Ruby - конвертировать строку в дату - PullRequest
10 голосов
/ 02 июня 2011

У меня есть строка типа «2011-06-02T23: 59: 59 + 05: 30».

Я хочу преобразовать его в формат даты, и мне нужно проанализировать только дату "2011-06-02".

Ответы [ 4 ]

27 голосов
/ 02 июня 2011

для Ruby 1.9.2:

require 'date'    # If not already required. If in Rails then you don't need this line).
puts DateTime.parse("2011-06-02T23:59:59+05:30").to_date.to_s
12 голосов
/ 02 июня 2011
require 'date'
d = Date.parse("2011-06-02T23:59:59+05:30")
d.strftime("%F")
2 голосов
/ 02 июня 2011

Time.parse () должен позволять вам анализировать все время даты. Затем вы можете использовать time.strftime (string), чтобы отформатировать это как просто дату в строке.

date = Time.parse("2011-06-02T23:59:59+05:30")
date_string = time.strftime("%y-%m-%d")
of
date_string = time.strftime("%F")

(см. Ruby Doc для времени для получения дополнительных форматов выходных строк) Выше должно работать, если вы хотите строку; если вы хотите, чтобы объект даты обрабатывал, тогда класс Date может помочь вам в этом, но я верю, что все еще нужно сделать с объектами Time; см. Ruby Doc для даты для получения подробной информации о классе Date.

Надеюсь, это поможет, дайте мне знать, если я ушел в неправильном направлении с моим ответом.

2 голосов
/ 02 июня 2011

Упрощенный способ

require 'date'
date = "2011-06-02T23:59:59+05:30".gsub(/T.*/, '')
DateTime.parse(date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...