конвертировать строку в DateTime - PullRequest
88 голосов
/ 04 февраля 2010

Мне нужно проанализировать следующую строку в объект DateTime:
30/Nov/2009:16:29:30 +0100

Есть ли простой способ сделать это?

PS: Я хочу преобразовать приведенную выше строку как есть. Двоеточие после года не опечатка. Я также хочу решить проблему с Ruby, а не с RoR.

Ответы [ 7 ]

91 голосов
/ 04 февраля 2010

DateTime.strptime позволяет указать формат и преобразовать строку в DateTime.

81 голосов
/ 14 марта 2012

Разве это не должно работать?

"30/Nov/2009 16:29:30 +0100".to_datetime
42 голосов
/ 17 апреля 2014

У меня был успех с:

require 'time'
t = Time.parse(some_string)
15 голосов
/ 05 августа 2015

Я использовал Time.parse("02/07/1988"), как и некоторые другие постеры.

Интересно, что Time было загружено по умолчанию, когда я открывал IRB, но Time.parse не было определено. Мне нужно было require 'time', чтобы заставить его работать.

Это с Ruby 2.2.

10 голосов
/ 30 мая 2012

Это преобразует строку даты в дату и время:

"05/05/2012".to_time
8 голосов
/ 12 декабря 2016

Для китайских разработчиков Rails:

DateTime.strptime('2012-12-09 00:01:36', '%Y-%m-%d %H:%M:%S')
=> Sun, 09 Dec 2012 00:01:36 +0000
5 голосов
/ 04 февраля 2010

в Ruby 1.8, модуль ParseDate преобразует этот и многие другие форматы даты / времени. Тем не менее, он не имеет дело с толстой кишкой между годом и часом. Если предположить, что двоеточие является опечаткой и фактически является пробелом, то:

#!/usr/bin/ruby1.8

require 'parsedate'

s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s))    # =>  Mon Nov 30 16:29:30 -0700 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...