2015-09-01 3 views
0

Salut mon code suivant me donne un jour à un seul chiffre (par exemple 2015_09_1), même si je suis au bout de 2 chiffres pour Yesterdays jour:date d'hier et l'heure montrant un seul chiffre jour - python

import time 

yesterday = time.strftime("%Y_%m_") + str(int(time.strftime('%d'))-1) 
print(yesterday) 
+0

Pourquoi vous traversez un int et de retour à la chaîne? Si vous voulez deux chiffres, placez le '% d' à la fin de la chaîne'% Y_% m_'. –

+0

@MarkReed alors ce n'est pas 'hier', notez le -1 –

+1

On répond à cette question sur http://stackoverflow.com/questions/441147/how-can-i-subtract-a-day-from-a-python-date –

Répondre

2

OK, premier , même si vous avez résolu le problème du remplissage nul, cela ne fonctionnera pas. Aujourd'hui, on dira qu'hier c'était le 0 septembre. Le 1er janvier, l'année sera également mauvaise.

Juste soustraire un jour (86 400 secondes) de l'heure actuelle et puis sous forme de chaîne.

yesterday = time.strftime("%Y_%m_%d", time.localtime(time.time()-86400)) 

Si vous préférez ne pas muck autour avec l'arithmétique à base secondes, voir la réponse de @ taesu utilisant datetime.timedelta.

+0

merci! très appréciée! – adama

+2

il peut produire une mauvaise date autour des transitions DST. [Il y a une différence entre "même heure il y a un jour" et "il y a 24 heures"] (http://stackoverflow.com/a/25427822/4279). Note: La réponse de @ taesu fonctionne même autour des transitions de l'heure d'été (sauf pour les cas (rares) où la date correspondante n'existe pas dans le fuseau horaire local). – jfs

2
from datetime import date, timedelta 
d = date.today() - timedelta(days=1) 
print d.strftime("%Y_%m_%d") 

il n'y a rien de mal à utiliser time,
mais je préfère personnellement datetime, juste parce qu'il est plus propre. Une raison pour laquelle je voudrais utiliser cette approche est parce que si je veux obtenir le jour d'avant hier, alors je devrais 86,400*2.

avec timedelta, il est tout simplement days=2

+0

merci! très appréciée! – adama

+1

[il ya * quelque chose qui ne va pas avec la solution 'time'] (http://stackoverflow.com/questions/32340618/yesterdays-date-and-time-showing-single-digit-day-python?noredirect= 1 # comment52590622_32340715) – jfs

+0

merci. Je ne savais pas à ce sujet. – taesu