如何在星期六01:05(JST)处理DateTIme风格

时间:2016-08-02 21:15:16

标签: ruby-on-rails ruby

我正在抓取一个网站以获取一集的日期和时间。所以我得到的是星期六01:05(JST),这是日本的时间。我的剧集表中有一个名为broadcast的字段,它有一个DateTime格式。 处理此问题并将时区更改为(pst)的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

假设你真的从网站上抓取字符串Saturdays at 01:05 (JST),有几件事需要考虑。

首先,单个DateTime字段不能真正能够代表一个经常性的时间,就像你一样。创建了像IceCube这样的宝石来处理复发的预定日期的复杂性。但是你可以使用一个DateTime字段,假设它存储了一个广播实例,而所有其他广播都是在每周的同一时间和日期。

现在,您需要解析您在该日期抓取的字符串。最简单的方法是使用Chronic gem,它采用各种英语措辞时间表示并将其转换为日期。根据您的日期,您需要将周六"星期六"所以Chronic知道要找到下周六:

require 'chronic'

string = "Saturdays at 1:30 (JST)"
broadcast = Chronic.parse(string.sub('days', 'day'))

broadcast变量现在保存DateTime值,您可以将其直接存储到数据库中。不要担心时区 - Chronic会返回带有区域信息的Time值,因此Rails会以UTC格式将其存储到您的数据库中,并在加载时将其转换回您的服务器时区。

如果您确实希望将时间转换为特定区域,可以轻松完成:

pst_time = broadcast.in_time_zone('Pacific Time (US & Canada)')