Ci sono un sacco di domande sulle conversioni datetime UTC e non sembra esserci un consenso su un "miglior modo".Come, con python, prendere un datetime UTC, rilevare automaticamente il fuso orario degli utenti e convertire il datetime nel formato desiderato?
In base a questo: http://lucumr.pocoo.org/2011/7/15/eppur-si-muove/, pytz è il modo migliore per andare. Egli mostra la conversione in fuso orario come questo datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
ma non dice come ottenere fuso orario dell'utente ...
Questo ragazzo https://stackoverflow.com/a/7465359/523051 dice "localize
regola per l'ora legale, replace
non"
Tutti quelli che vedono usando pytz viene fornito il proprio fuso orario (users_timezone = timezone("US/Pacific")
), che non capisco perché non si può sapere se è lì che il tuo spettatore è ...
Questo ragazzo https://stackoverflow.com/a/4771733/523051 ha un modo per rilevare automaticamente i fusi orari, ma questo utilizza la libreria dateutil
e non pytz, come raccomandato da Armin Ronacher e i documenti python ufficiali (http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior, appena sopra quell'ancora in scatola gialla)
Tutto ciò di cui ho bisogno è il modo più semplice, a prova di futuro, tutto l'ora legale/ecc. considerato come modo di prendere il mio timbro datetime.utcnow() 2012-08-25 10:59:56.511479
), convertirlo nel fuso orario dell'utente. E mostrare come questo:
Aug 25 - 10:59AM
e se l'anno non è l'anno in corso, mi piacerebbe dire
Aug 25 '11 - 10:59AM
ho imparato che il tzlocal() non funziona affatto su Heroku. la funzione sopra riportata restituisce semplicemente l'ora UTC. – chrickso
Inoltre, ho perso ogni speranza che il loro sia un modo affidabile per determinare con precisione il fuso orario di un utente e regolare automaticamente i tempi. Vedo che Twitter ha un'impostazione per regolare il fuso orario, quindi questo deve essere il modo: memorizzare le preferenze dell'utente e utilizzarlo per le conversioni. – chrickso