Rubygems Chronic не может анализировать «2010-09-12 15:12», но может анализировать «2010-09-12 15:00» или «последний понедельник 15:12»? - PullRequest
1 голос
/ 13 сентября 2010

Кажется странным, что "2010--9-12 15:12" слабое место Хронического Рубигема?Есть ли способ заставить его работать?(или другой драгоценный камень, который может это сделать?) Я также надеюсь найти парсер, который может обрабатывать 2010-09-12 3:12pm UTC или другие часовые пояса, такие как PDT, PST или UTC+8 или -0700

irb(main):001:0> RUBY_VERSION
=> "1.8.7"

irb(main):002:0> require 'rubygems'
=> true
irb(main):003:0> require 'chronic'
=> true

irb(main):004:0> Chronic.parse('9/12/2010')
=> Sun Sep 12 12:00:00 -0700 2010

irb(main):005:0> Chronic.parse('9/12/2010 3pm')
=> Sun Sep 12 15:00:00 -0700 2010

irb(main):006:0> Chronic.parse('9/12/2010 3:12pm')    # <-- cannot work
=> nil

irb(main):007:0> Chronic.parse('last monday 3:12pm')
=> Mon Sep 06 15:12:00 -0700 2010

irb(main):008:0> Chronic.parse('2010-09-12')
=> Sun Sep 12 12:00:00 -0700 2010

irb(main):009:0> Chronic.parse('2010-09-12 3:12pm')   # <-- cannot work
=> nil

1 Ответ

1 голос
/ 13 сентября 2010

Это работает для меня, используя последние Chronic на Github на Ruby 1.8.7 (2009-06-12 patchlevel 174):

>> RUBY_VERSION
=> "1.8.7"

>> require './chronic/lib/chronic'
=> true

>> Chronic.parse('9/12/2010 3:12pm')
=> Sun Sep 12 15:12:00 +0100 2010

>> Chronic.parse('2010-09-12 3:12pm')
=> Sun Sep 12 15:12:00 +0100 2010

В тестовом наборе есть тесты для:

time = parse_now("2006-08-20 7pm")
assert_equal Time.local(2006, 8, 20, 19), time

time = parse_now("2006-08-20 03:00")
assert_equal Time.local(2006, 8, 20, 3), time

Но не точное совпадение с датой вашей проблемы. Поэтому, если вы обнаружили ошибку, возможно, стоит сообщить автору Chronic, чтобы он мог обновить тесты.

Кстати ... что вы получаете, когда пытаетесь:

require 'time'

puts Time.parse('2010-09-12 3:12pm')

Потому что я получил правильное: Sun Sep 12 15:12:00 +0100 2010 (NB. Я нахожусь в летнее время здесь). Я упоминаю об этом, потому что сегодня утром я увидел двусмысленный твит о проблеме с API времени в выпуске второстепенной точки .

/ I3az /

...