Я работаю с строками Date в Ruby и хочу определить, была ли строка передана с часовым поясом или нет (кроме простого разбора текста). Если часовой пояс не указан, я хочу преобразовать его в определенный часовой пояс, зависящий от других факторов.Ruby: получить компонент TimeZone строки
Пример:
DateTime.parse("2014-01-01T23:59:00")
=> #<DateTime: 2014-01-01T23:59:00+00:00 ((2456659j,86340s,0n),+0s,2299161j)>
DateTime.parse("2014-01-01T23:59:00Z")
=> #<DateTime: 2014-01-01T23:59:00+00:00 ((2456659j,86340s,0n),+0s,2299161j)>
DateTime.parse("2014-01-01T23:59:00PST")
=> #<DateTime: 2014-01-01T23:59:00-08:00 ((2456660j,28740s,0n),-28800s,2299161j)>
Проблема заключается в том, что анализ "2014-01-01T23: 59: 00" и "2014-01-01T23: 59: 00Z" (с зулу) дает тот же результат, когда указывается «Зулу», а другой нет. Я уверен, что поведение по умолчанию - принять UTC, если зона не указана.
не Z в то же время, как зона UTC? Я не понимаю проблему – tlehman
Это, но я хочу определить, когда строка НЕ задает какой-либо часовой пояс ('Z' или иначе) – Devin
Получил ли он, и вы полагаете, что вход всегда в формате ISO 8601? – tlehman