2015-01-03 4 views
1

Я пишу скрипт Ruby. Он должен принять отметку времени от пользователя, а затем использовать некоторые запросы к базе данных. Насколько я знаю, база данных хранит временные метки в UTC.Ruby Timestamp Надежно конвертируется в UTC

Я хочу, чтобы позволить пользователям указать время в следующем формате: 2015-01-01 5:00 утра CST

Из того, что Google говорит мне CST на 6 часов меньше, чем в UTC, поэтому после преобразования в 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 11:00 PM UTC?

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

печатает

2015-01-01 11:00:00 UTC

Переход от утра до вечера, кажется, не имеет никакого значения, как это может быть?

ответ

0

У меня было это в обратном направлении! UTC - AHEAD of CST, поэтому, когда CST преобразуется в UTC, 6 часов будут добавлены к времени CST !!

Ruby делает все правильно.

So 5 AM CST = 11 AM UTC. И 5 PM CST = 11 PM UTC.

Разница в день происходит, если я тест 11 PM CST:

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

отпечатки

2015-01-02 05:00:00 UTC

То есть правильно увеличивается день.