是否有一个通用解析器来解析“... previous”字符串并将它们转换为DateTime对象?
可能的句子是:
所以它要么是两个的组合(Foo和Bar之前),要么只有一个(Foo之前)。它可以是单数或复数。
Ruby的DateTime::parse()
无法处理此问题,DateTime::strptime()
也无法处理。
我希望在某个地方处理这个问题的宝石或片段。
否则我将不得不创建自己的解析器,在这种情况下,非常欢迎指向如何创建自己的DateTime解析器的指针。
旁注:未来参考:这些是由Drupals Format Interval生成的时间串
答案 0 :(得分:9)
Chronic宝石可能就是你要找的东西。
require 'chronic'
Chronic.parse "2 days ago"
# => 2011-06-14 14:13:59 -0700
Per @injekt(Chronic的维护者之一),你可以像这样处理“1年1周前”:
str = "one year and 1 week ago"
chunks = str.split('and')
Chronic.parse(chunks[1], :now => Chronic.parse(chunks[0] + 'ago'))
#=> 2010-06-09 14:29:37 -0700