Форматирование «вчерашней» даты в python


232

Мне нужно найти «вчерашнюю» дату в этом формате MMDDYYв Python.

Так, например, сегодняшняя дата будет представлена ​​следующим образом: 111009

Я легко могу сделать это на сегодня, но у меня есть проблемы, когда я делаю это автоматически на «вчера».

Ответы:


387

использование datetime.timedelta()

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

1
Если вам print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
довелось

Если вам приходится искать варианты, вы также можете использовать маятник ( pendulum.eustace.io ): pendulum.now (). Subtract (days = -1) .strftime ('% m% d% y')
AFD,


21

Это должно делать то, что вы хотите:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")

1
Почему вас больше волнует дата для людей со смещением 0 по UTC, чем дата в местном часовом поясе системы?
Джеффри Харрис

1
Я скопировал это из своего кода, при использовании базы данных вы часто заботитесь о UTC. Удалены вещи UTC.
Стеф

7

все ответы верны, но я хочу отметить, что дельта времени принимает отрицательные аргументы .

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

5

Могу ли я просто сделать это несколько более интернациональным и отформатировать дату в соответствии с международным стандартом, а не в тот странный месяц-день-год, который распространен в США?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')

Согласитесь, мы используем странный формат даты в Штатах, но ФП специально запросил этот странный формат - в данном случае это «% m% d% y».
DaveL17

@ DaveL17, честно. Я оставлю ответ всем за пределами США, которые наткнулись на этот вопрос.
Арвид Бярнхильм

2

Расширить ответ, данный Крисом

если вы хотите сохранить дату в переменной в определенном формате, это самый короткий и эффективный способ, насколько я знаю

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

Если вы хотите это как целое число (которое может быть полезным)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.