1

“2010--9-12 3:12pm”是Chronic Rubygem的弱点,这似乎很奇怪?有没有办法让它工作?(或另一个可以做到的gem?)我也希望找到一个可以处理2010-09-12 3:12pm UTC或其他时区的解析器,例如PDT, PST, UTC+8or-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
4

1 回答 1

1

它适用于我在 Ruby 1.8.7 (2009-06-12 patchlevel 174) 上使用 Github 上Chronic最新版本:

>> 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注意。我在这里是夏令时)。我之所以提到这一点,是因为我今天早上看到了一条模棱两可的推文,内容是关于次要版本中时间 API问题

/I3az/

于 2010-09-13T09:18:01.473 回答