J'ai deux machines distinctes (développement local et serveur) accédant au même datetime à partir d'une base de données. Les objets DateTime ont la même valeur (y compris fuseau horaire) sur les deux machines:Comment forcer datetime.strftime de python à sortir en UTC?
Local
print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)
serveur
print ts
> datetime.datetime(2017, 1, 13, 7, 18, 9, 209000, tzinfo=<UTC>)
Cependant, la sortie de strftime
est différent sur les deux machines :
Local
print ts.strftime('%s')
> 1484320689
serveur
print ts.strftime('%s')
> 1484291889
Qu'est-ce qui se passe ici? Comment puis-je obtenir à la fois le client et le serveur pour produire la même chaîne d'horodatage dans UTC?
Pouvez-vous inclure la façon exacte dont vous créez 'dt' afin que nous puissions répliquer correctement? Parce que j'utiliserais conventionnellement 'import datetime as dt' ce qui signifie que' print dt' donne ''. De toute évidence, cela ne reproduit pas le problème (et il manque la base de données lue), mais je ne vois pas comment créer un cas de test exact. –
roganjosh
@roganjosh dt était juste le nom de la variable que j'obtiens de la base de données. Je l'ai renommé en 'ts' pour éviter la confusion avec une importation telle que 'import datetime.datetime as dt'. – Paul
Vous pouvez créer un cas de test similaire comme suit: 'print datetime.utcnow(). Replace (tzinfo = pytz.utc) .strftime ('% s')' L'exécution sur les deux machines séparées génère une sortie différente value (plus de quelques secondes), même si 'datetime.utcnow()' est le même sur les deux machines – Paul