首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chronic在夏令时停止解析简单的时间格式

Chronic在夏令时停止解析简单的时间格式
EN

Stack Overflow用户
提问于 2016-10-02 10:07:50
回答 1查看 52关注 0票数 0

几周来,我已经在我的Rails应用程序中成功地使用了Chronic。我没有用它做任何花哨的事情,只是用它来解析基本的时间输入,比如‘1:21 my’或'1440‘等等。直到今天,当我运行我的测试套件时,一切都运行得很好,但遇到了一个非常奇怪的故障。

这些都是有效的:

代码语言:javascript
复制
Chronic.parse('1:21am')
=> 2016-10-02 00:21:00 +1000
Chronic.parse('0121')
=> 2016-10-03 01:21:00 +1100
Chronic.parse('0021')
=> 2016-10-03 00:21:00 +1100
Chronic.parse('1:21 AM')
=> 2016-10-02 00:21:00 +1000

但是,12:21 AM返回nil:

代码语言:javascript
复制
Chronic.parse('12:21 AM')
=> nil

在我的代码中,我实际上是在做一个strftime,去掉日期并保持时间,因为这就是我所关心的。但当Chronic返回nil时,这自然不起作用。

代码语言:javascript
复制
self.time = Chronic.parse(time).try(:strftime, '%l:%M %p')

有趣的是,今天早上我所在的悉尼时区开始实行夏令时。我已经有一段时间没有对这段代码做任何修改了,所以我猜它是相关的。

EN

回答 1

Stack Overflow用户

发布于 2016-10-08 18:33:51

有两种解决方案:

A)告诉Chronic使用Time.zone

这种方式对我很有效。基本上:

代码语言:javascript
复制
Chronic.time_class = Time.zone
self.time = Chronic.parse(time).try(:strftime, '%l:%M %p')

B)使用不受夏令时影响的固定日期进行解析

由于我只对时间而不是日期感兴趣,在这种情况下,我们可以在解析时间时使用我们知道不受夏令时影响的特定日期。例如:

代码语言:javascript
复制
Chronic.parse("5/27/1979 at #{time}").try(:strftime, '%l:%M %p')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39813211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档