Есть ли 24-часовая настройка времени для Хронического?

Я наткнулся на интересное (и какое-то время озадачивающее) поведение при использовании драгоценного камня Chronic.

Разбор строки 1/21/13 2:20:

Chronic.parse('1/21/13 2:20')
=> 2013-01-21 14:20:00 -0800

Однако, если 0 стоит перед 2:

Chronic.parse('1/21/13 02:20')
 => 2013-01-21 02:20:00 -0800

Теперь я могу поместить AM или PM в конец строки, что, по существу, переопределяет это поведение (поэтому не имеет значения, присутствует ли начальный 0), но это, очевидно, дополнительный шаг синтаксического анализа, который сводит на нет большую часть Преимущество использования хрон. Есть ли другой вариант правильного решения этой проблемы с ведущим нулем? Меня застало врасплох, что это еще не было выяснено.

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


person Evan Zamir    schedule 31.01.2013    source источник
comment
Как добавление AM/PM снижает преимущество использования Chronic? Я думаю, что наиболее разумный способ действий — это запрос на вытягивание драгоценного камня, чтобы сделать поведение последовательным.   -  person sunnyrjuneja    schedule 01.02.2013
comment
@SunnyJuneja Это не полностью отменяет использование Chronic, но это дополнительный шаг анализа с моей стороны (строки поступают из внешнего источника, который я не могу контролировать). Однако вся идея Chronic, по-видимому, состоит в том, чтобы избежать такого неуклюжего синтаксического анализа.   -  person Evan Zamir    schedule 01.02.2013


Ответы (1)


Ну, можно просто вычесть 12 часов:

time = Chronic.parse('1/21/13 2:20')
time -= - 12 * 60 * 60 if time.hour >= 12
#=> 2013-01-22 02:20:00 0800
person pguardiario    schedule 31.01.2013
comment
Для тех, кто, я думаю, вы могли бы проверить, если time.hour != str[/\d+(?=:)/].to_i - person pguardiario; 01.02.2013