我想模仿Mac日历快速活动或Fantastical快速入门的功能。使用Chronic gem,我可以传递一个字符串:
"Today at 3pm"
=> 2014-01-24 15:00:00 -0600
如果传入类似的内容,慢性解析不起作用:
"Eat at Joes Today at 3pm"
=> nil
到目前为止我所做的是使用一个简单的正则表达式将一个字符串拆分为通常用于返回Chronic日期的单词。最初的正则表达式很简单:
scan(/(.+)(tomorrow{1}.+|in\s.+|next\s.+|today\s.+)/)
这将返回一个带有“title”的数组,如果你愿意的话,以及我想发送给Chronic的字符串为我解析。
两个问题:
Eat at Joes Today at 3pm
传递给Chronic.parse,它将返回nil。它似乎无法识别字符串中用于格式化日期的部分。答案 0 :(得分:2)
我不会编辑慢性病。慢性病的唯一功能是解析自然语言日期时间,而不是其他输入。您可能对Nickel
gem感兴趣:
https://github.com/iainbeeston/nickel
这将时间与其他语言分开。
n = Nickel.parse("use the force on july 1st at 9am", Time.now)
n.message #=> "use the force"
n.occurrences.first.start_date #=> "20110701"