2015-01-03 37 views
1

我在寫一個Ruby腳本。它需要接受來自用戶的時間戳,然後使用它進行一些數據庫查詢。 據我所知,數據庫正在以UTC存儲時間戳。Ruby時間戳可靠地轉換爲UTC

我希望讓用戶指定以下格式的時間:2015年1月1日上午5時00分CST

從什麼谷歌告訴我CST比UTC 6小時後,使轉換爲UTC我以後會預計時間爲2014-12-31 11:00 UTC。

但這不是我所看到的。

Time.strptime('2015-01-01 05:00 AM CST', '%Y-%m-%d %I:%M %P %Z').utc

打印

2015-01-01 11:00:00 UTC

難道不應該已經印2014-12-31 23:00 UTC?

Time.strptime('2015-01-01 05:00 PM CST', '%Y-%m-%d %I:%M %Z').utc

打印

2015-01-01 11:00:00 UTC

從AM到PM的變化似乎並沒有什麼差別,這怎麼可能?

回答

0

我倒退了! UTC是CST的前鋒,所以當CST轉換爲UTC時,6小時將被添加到CST時間!

Ruby做得對。

So 5 AM CST = 11 UTC UTC。 和5 PM CST =下午11點UTC。

Time.strptime('2015-01-01 11:00 PM CST', '%Y-%m-%d %I:%M %P %Z').utc

打印

2015-01-02 05:00:00 UTC

也就是說它正確地遞增日:

在一天的不同,如果我考11 PM CST發生。