Как заставить функцию Time.rfc2822
выдавать +0000
?
Ruby позволяет мне довольно легко анализировать время в формате RFC2822:
require 'time'
time = Time.parse('14 Aug 2009 09:28:32 +0000')
puts time
=> "2009-08-14 05:28:32 -0400"
А как насчет отображения времени? Обратите внимание, что время, которое он проанализировал, является местным временем. Не беспокойтесь, я могу преобразовать его обратно во время UTC с помощью gmtime
:
puts time.gmtime
=> "2009-08-14 09:28:32 UTC"
Затем я могу вернуть его в формат RFC2822:
puts time.gmtime.rfc2822
=> "Fri, 14 Aug 2009 09:28:32 -0000"
К сожалению, это не совсем то, что я хочу. Обратите внимание, что +0000
теперь -0000
. Согласно RFC2822, это связано с тем, что:
Форму «+0000» СЛЕДУЕТ использовать для указания часового пояса по универсальному времени. Хотя «-0000» также указывает универсальное время, оно используется для указания того, что время было сгенерировано в системе, которая может находиться в местном часовом поясе, отличном от универсального времени, и поэтому указывает, что дата-время не содержит информации о местном времени. зона.
Отлично, так как же я могу принудительно использовать +0000
, кроме как с исправлением обезьяньей функции rfc2822
?
DateTime.parse('14 Aug 2009 09:28:32 +0000').rfc2822
дает"Fri, 14 Aug 2009 09:28:32 +0000"
. - person Bkkbrad   schedule 18.08.2009