Форматування "вчорашньої" дати в 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'))
etna

Якщо вам трапляється пошук варіантів, ви також можете використовувати маятник ( pendulum.eustace.io ): pendulum.now (). Відняти (дні = -1) .перерв ('% m% d% y')
AFD


21

Це має робити те, що ви хочете:

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

1
Чому ви більше турбуєтесь про дату для людей у ​​зміщенні UTC 0, ніж дату в локальному часовому поясі системи?
Джефрі Харріс

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, справедлива точка. Я залишу відповідь для всіх поза США, які натрапляють на це питання.
Arvid Bäärnhielm

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.