web-dev-qa-db-fra.com

Formater la date "d'hier" en python

Je dois trouver la date "d'hier" dans ce format MMDDYY en Python.

Ainsi, par exemple, la date d'aujourd'hui serait représentée comme suit: 111009

Je peux facilement le faire pour aujourd'hui mais j'ai du mal à le faire automatiquement pour «hier».

176
y2k
>>> from datetime import date, timedelta
>>> yesterday = date.today() - timedelta(1)
>>> print yesterday.strftime('%m%d%y')
'110909'
296
Jarret Hardie
from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%m%d%y')
150
Nadia Alramli

Cela devrait faire ce que vous voulez:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")
15
Stef
import datetime
now = datetime.datetime.now()
now -= datetime.timedelta(days=1)
print now.strftime("%m%d%y")
7
Ned Batchelder

Cela devrait faire l'affaire. Volé de la liste de diffusion python .

from datetime import datetime, timedelta

today = datetime.today()
yesterday = today - timedelta(1)
4
William Brendel

Pour développer la réponse donnée par Chris

si vous voulez stocker la date dans une variable dans un format spécifique, c'est le moyen le plus court et le plus efficace pour autant que je sache

>>> from datetime import date, timedelta                   
>>> yesterday = (date.today() - timedelta(days=1)).strftime('%m%d%y')
>>> yesterday
'020817'

Si vous le voulez comme un entier (ce qui peut être utile)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
2
Pär Berge

toutes les réponses sont correctes, mais je tiens à mentionner que delta temporel accepte les arguments négatifs

>>> from datetime import date, timedelta
>>> yesterday = date.today() + timedelta(days=-1)
>>> print(yesterday.strftime('%m%d%y')) #for python2 remove parentheses 
2
Iman Mirzadeh

Vous pouvez trouver tous les codes de format de chaîne ici: http://au2.php.net/strftime

In [1]: import datetime

In [2]: today=datetime.date.today()

In [3]: yesterday=today-datetime.timedelta(1)

In [4]: yesterday.strftime('%m%d%y')
Out[4]: '110909'
1
unutbu

Pourrais-je simplement rendre cela un peu plus international et formater la date conformément à la norme internationale et non pas dans le mois bizarre année-jour, qui est courant aux États-Unis?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')
0
Arvid Bäärnhielm