Es gibt eine Menge Fragen zu UTC-Datetime-Conversions und es scheint keinen Konsens zu geben, der "der beste Weg" ist.Wie, mit Python, eine UTC-Datetime, automatische Erkennung der Zeitzone des Benutzers, und konvertiert die Datetime in das gewünschte Format?
Nach diesem: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/, Pytz ist der beste Weg zu gehen. er zeigt die Umwandlung wie diese datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
zu Zeitzone, aber er sagt nicht, wie die Benutzer-Zeitzone zu erhalten ...
Dieser Typ https://stackoverflow.com/a/7465359/523051 sagt „localize
für die Sommerzeit einstellt, replace
nicht“
Jeder, den ich sehen mit Pytz liefert ihre eigene Zeitzone (users_timezone = timezone("US/Pacific")
), die ich nicht verstehe, weil Sie nicht wissen können, ob das ist, wo Ihr Betrachter ist ...
Dieser Typ https://stackoverflow.com/a/4771733/523051 hat eine Möglichkeit, die Zeitzonen automatisch zu erkennen, aber Dies ist mit der dateutil
Bibliothek und nicht Pytz, wie von Armin Ronacher empfohlen und die offizielle Python-Dokumentation (http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior, genau darüber in gelbem Kasten)
Alles, was ich brauche, ist die einfachste, zukunftssichere, alle Sommerzeit/etc berücksichtigt Weg, um meine datetime.utcnow() Stempel (2012-08-25 10:59:56.511479
), wandeln Sie die Zeitzone des Benutzers um. Und zeigen sie dies wie:
Aug 25 - 10:59AM
und wenn das Jahr nicht das aktuelle Jahr, würde Ich mag
Aug 25 '11 - 10:59AM
ich gelernt habe, dass die tzlocal() gar nicht auf nicht funktioniert heroku. Die obige Funktion gibt einfach die UTC-Zeit zurück. – chrickso
auch beachten Sie, ich habe alle Hoffnung verloren, dass sie eine zuverlässige Möglichkeit ist, die Zeitzone eines Benutzers genau zu bestimmen und Zeiten automatisch anzupassen. Ich sehe, dass Twitter eine Einstellung hat, um Ihre Zeitzone anzupassen, so dass dies der Weg sein muss: speichern Sie Benutzereinstellungen und verwenden Sie diese für Conversions. – chrickso