Вызов Date.today
в Ruby возвращает текущую дату. Но какой часовой пояс? Я предполагаю UTC, но я хочу убедиться. documentation не указывается в любом случае.Есть ли дата в UTC?
ответ
Даты не имеют временных зон, так как они не представляют собой время.
Тем не менее, как и для как вычисляет текущий день, давайте посмотрим на этот экстракт из the code for Date.today
:
time_t t;
struct tm tm;
// ...
if (time(&t) == -1)
rb_sys_fail("time");
if (!localtime_r(&t, &tm))
rb_sys_fail("localtime");
Затем переходит к использованию использовать tm
для создания Date
объекта. Так как tm
содержит местное время системы с использованием localtime()
, Date.today
поэтому использует локальное время системы, а не UTC.
Вы всегда можете использовать Time#utc
на любой Time
преобразовать его в месте по Гринвичу, или Time#getutc
вернуть новый эквивалентный Time
объект в формате UTC. Затем вы можете позвонить Time#to_date
, чтобы получить Date
. Итак: some_time.getutc.to_date
.
Если вы используете ActiveSupport’s time zone support (в комплекте с Rails), обратите внимание, что полностью отделено от времени конструкторов в Ruby и не влияют на них (т.е. это не меняет Time.now
или Date.today
работы). См. Также ActiveSupport extensions to Time
.
Экземпляр Даты представлен как астрономический номер юлианского дня; он не имеет дробной части дня. В то время как Юлианский день относится к GMT - поэтому технически экземпляр Date должен считаться находящимся в GMT - для большинства целей вы можете игнорировать это и относиться к нему как к отсутствующему часовому поясу. Вы будете заботиться только о часовом поясе, если вы преобразуете его в DateTime или Time.
Инструменты ActiveSupport для преобразования даты позволяют указать, хотите ли вы местное время или UTC.
Например:
>> t = Date.today.to_time
=> Wed Apr 18 00:00:00 -0400 2012
>> t.zone
=> "EDT"
>> t = Date.today.to_time(:utc)
=> Wed Apr 18 00:00:00 UTC 2012
>> t.zone
=> "UTC"
См. Комментарий, который я сделал в ответ @ AndrewMarshall относительно того, почему я задал оригинальный вопрос. В принципе, я пытаюсь выяснить, будет ли Date.today в локальной системе таким же, как Date.today в системе в UTC. –
Как говорит Эндрю, Date.today генерирует дату с местного времени, а не UTC. Чтобы получить актуальную дату в UTC, попробуйте Time.now.utc.to_date –
Я бы просто отметил, что, хотя в некоторых странах игнорирование часового пояса может работать, здесь, в Новой Зеландии, вы получаете неправильную дату для большую часть рабочего дня, если вы это сделаете. (например, 10 утра местного времени 13 февраля, я думаю, 2100 UTC на 12-м). – Rich
Вы можете уйти с помощью
Time.now.utc.to_date
рубина
Гораздо лучше, чем принятый ответ. Интересно, добавлено ли это с апреля 2012 года. –
это полезная информация, но она не отвечает на вопрос. это отвечает на соответствующий вопрос «как я могу получить дату текущего времени UTC?», плакат спросил, Date.today был в UTC или нет, а не как получить дату в utc. –
Если приложения Перила настроен для работы в часовом поясе UTC затем просто использовать Time.zone.today
, в противном случае заставьте его с помощью Time.now.utc.to_date
Вы можете использовать
Date.current
Чтобы получить текущую дату сконфигурированной часового пояса.
- 1. Дата UTC в Flex
- 2. Дата платежа как UTC
- 3. Преобразование UTC Дата в локальную Дата
- 4. kendo grid UTC Дата
- 5. Дата в формате UTC Java
- 6. FullCalendar - eventDrop UTC Дата
- 7. Дата UTC один месяц
- 8. GET UTC Дата последней даты
- 9. Дата создания без смещения UTC
- 10. дата новообращенный UTC с +00
- 11. Java Как конвертировать UTC миллисекунды в UTC Дата
- 12. Дата экспорта отображается как UTC
- 13. JavaScript Дата конструктора и UTC
- 14. Магазин UTC Дата/время в MongoDB
- 15. Есть ли дата +% s в локальном часовом поясе или в UTC?
- 16. * javascript * Преобразование даты строки в UTC Дата
- 17. Угловая преобразователь дата фильтра, но дата всегда преобразуется в UTC
- 18. Нужна текущая дата в формате «UTC» часовой пояс, имеющий Дата
- 19. MongoDb Магазины BSON Дата в UTC
- 20. JavaScript Дата преобразования в UTC на HighCharts
- 21. MomentJS получение JavaScript Дата в UTC
- 22. Дата выхода в UTC с использованием SimpleDateFormat
- 23. Проверьте, есть ли дата Воскресенье
- 24. Веб-API Дата только UTC-преобразование
- 25. Должен ли почтовый заголовок «Дата» быть местным отправителем или UTC?
- 26. JavaScript дата объекта, использует ли он UTC по умолчанию?
- 27. импортированная дата == сервер Дата UTC: правильная обработка часового пояса/конверсия?
- 28. Есть ли "Дата" ключевое слово в mysql?
- 29. Определите, есть ли дата Oracle в выходные?
- 30. Проверить, есть ли дата в будущем
Спасибо за разъяснение. Думаю, лучший способ задать свой вопрос был бы «в связи с тем, что часовой пояс на Date.today вернется на следующий день?» Я полагаю, что если мне нужна «сегодняшняя дата в UTC», мне нужно будет сделать что-то вроде «Time.now.zone.to_date» (в Rails). –
'Time.zone.now.to_date' будет использовать любой часовой пояс, на который настроено приложение. Стоит посмотреть в 'Time.use_zone ('[имя зоны]')', если вы хотите установить часовой пояс для определенного блока кода, в этом случае - UTC. –
Да с управлением часовым поясом ActiveSupport вы можете сделать 'Time.zone.now.to_date', который равен' Time.current.to_date', который равен 'Date.current'. –