Мне нужно проанализировать следующую строку в объекте DateTime:
30/Nov/2009:16:29:30 +0100
Есть простой способ сделать это?
PS: я хочу преобразовать строку выше как есть. Двоеточие после года - это не опечатка. Еще я хочу решить проблему с Ruby, а не с RoR.
%d/%b/%Y:%H:%M:%S %Z
%Y
будет соответствовать как2015
(как и ожидалось),2016-foo-bar
так и остановится, когда увидит2016
. Это поведение согласуется с аналогом C; однако функция C возвращает позицию конца сопоставления (например, первую-
в случае «2016»), чтобы мы могли решить, является ли совпадение точным; в Ruby он возвращает aDateTime
, поэтому мы не можем сказать, осталось ли что-нибудь потом.Разве это тоже не должно работать?
источник
require 'active_support/all'
а затем"30/Nov/2009 16:29:30 +0100".to_datetime
(на самом деле вам не нужны все расширения active_support, но удачи в выяснении, какие из них требуются выборочно)to_datetime
добавления кString
объектам:require 'active_support/core_ext/string/conversions'
Я добился успеха с:
источник
Я использовал
Time.parse("02/07/1988")
, как и некоторые другие плакаты.Интересная проблема заключалась в том, что
Time
при открытии IRB загружалась по умолчанию, ноTime.parse
не была определена. Я должен былrequire 'time'
заставить его работать.Это с Ruby 2.2.
источник
Это преобразует строку в date в datetime:
источник
Для китайских разработчиков Rails:
источник
в Ruby 1.8 модуль ParseDate преобразует этот и многие другие форматы даты и времени. Однако он не совсем корректно обрабатывает двоеточие между годом и часом. Предположим, что двоеточие - это опечатка и на самом деле пробел, тогда:
источник
Вы также можете проанализировать строку даты и времени с заданным часовым поясом:
источник