Преобразование временной метки UTC в ISO 8601 в Ruby
У меня есть метка времени, которая находится в UTC
"2010-10-25 23:48:46 UTC"
Мне нужно преобразовать его в ISO 8601
"2010-10-29 06: 09Z"
Документация сбивает с толку как ад - что это самый простой способ сделать это?
Ответ 1
Я думаю, вы пытаетесь обмануть нас.
Дата ввода на ваш вопрос - 25 октября 2010 года, а выход - 29th октября 2010 года. Хорошо сыграл!
Продолжая этот нит-выбор: ваши времена также совершенно разные, и вам не хватает секунд с момента выхода.
Теперь для истинного ответа.
Вначале небольшой факт: выход ISO 8601 в Ruby похож на вывод "Комбинированные даты и времени" из ISO 8601, страница Wikipedia.
У вас есть строка, поэтому вам нужно будет преобразовать ее в объект Time, который вы можете сделать с помощью to_time. Тогда просто вопрос вызова iso8601 на этом объекте для получения версии ISO 8601:
"2010-10-25 23:48:46 UTC".to_time.iso8601
Метод to_time любезно предоставлен Rails, а iso8601 является придворной стандартной библиотекой Ruby.
Ответ 2
После долгих экспериментов я нахожу, что парсер Time Library лучше, чем DateTime, хотя причины меня избегают в данный момент. С этим предостережением я всегда использую Time, а не DateTime для такого рода вещей, и рубиновая документация также трудно понять, почему это так,