J'analyse quelque chose comme ça:
11/23/10 23:29:57
qui n'a pas de fuseau horaire associé, mais je sais que c'est dans le fuseau horaire UTC (alors que je ne le suis pas). Comment puis-je obtenir Ruby pour analyser cela comme s'il était dans le fuseau horaire UTC?
Vous pouvez simplement ajouter le nom du fuseau horaire UTC à la chaîne avant de l'analyser:
require 'time'
s = "11/23/10 23:29:57"
Time.parse(s) # => Tue Nov 23 23:29:57 -0800 2010
s += " UTC"
Time.parse(s) # => Tue Nov 23 23:29:57 UTC 2010
Si vous utilisez Rails vous pouvez utiliser le ActiveSupport::TimeZone
aides
current_timezone = Time.zone
Time.zone = "UTC"
Time.zone.parse("Tue Nov 23 23:29:57 2010") # => Tue, 23 Nov 2010 23:29:57 UTC +00:00
Time.zone = current_timezone
Il est conçu pour que le fuseau horaire soit défini au début de la demande en fonction du fuseau horaire de l'utilisateur.
Tout doit avoir Time.zone
dessus, donc Time.parse
analyserait toujours le fuseau horaire du serveur.
http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
Remarque: le format d'heure que vous avez ci-dessus ne fonctionnait plus, j'ai donc changé pour un format pris en charge.
Une légende à la réponse de @Pete Brumm sans Time.zone set/unset
Time.zone.parse("Tue Nov 23 23:29:57 2010") + Time.zone.utc_offset
Si vous utilisez ActiveSupport [de Rails, par exemple], vous pouvez le faire:
ActiveSupport::TimeZone["GMT"].parse("..... date string")