Comment puis-je forcer la fonction Time.rfc2822
à cracher +0000
?Forçage du fuseau horaire "+0000" pour RFC2822 fois dans Ruby
Ruby me permet de parser RFC2822 fois assez facilement au format:
require 'time'
time = Time.parse('14 Aug 2009 09:28:32 +0000')
puts time
=> "2009-08-14 05:28:32 -0400"
Mais qu'en affichage temps? Notez que l'heure à laquelle il est analysé est une heure locale. Pas de soucis, je peux le reconvertir en un temps UTC avec gmtime
:
puts time.gmtime
=> "2009-08-14 09:28:32 UTC"
Je peux ensuite le remettre au format RFC2822:
puts time.gmtime.rfc2822
=> "Fri, 14 Aug 2009 09:28:32 -0000"
Malheureusement, ce n'est pas tout à fait ce que je veux. Notez que +0000
est maintenant -0000
. Selon RFC2822, c'est parce que:
La forme « +0000 » DEVRAIT être utilisé pour indiquer un fuseau horaire à temps universel. Bien que "-0000" indique aussi l'heure universelle, indique que l'heure a été générée sur un système dans un fuseau horaire autre que l'heure universelle. Par conséquent, indique que la date et l'heure ne contiennent aucune information sur le fuseau horaire local .
Grande - Comment puis-je forcer +0000
autre que le singe-patcher la fonction rfc2822
?
Si vous définissez le fuseau horaire en heure universelle avant d'appeler gmtime.rfc2882 obtenez-vous la sortie appropriée? Il semble que cela rapporte ce qu'il devrait rapporter, car je pense que Time.zone devrait être défini sur votre zone locale, par défaut. –
Je ne sais pas exactement ce que vous voulez dire. Cependant, j'ai trouvé que la classe DateTime est beaucoup plus agréable; 'DateTime.parse ('14 août 2009 09:28:32 +0000 '). Rfc2822' rendements' "Fri, 14 Aug 2009 09:28:32 +0000" '. – Bkkbrad
Mon garçon, c'est étrange ... et oui: ma réflexion sur le fuseau horaire s'est un peu embrouillée. Visser dans la console pour trouver quelque chose pour vous aider à me redresser ... ne m'a rien donné à partager avec vous, malheureusement. –