Memformat tanggal "kemarin" dengan python

232

Saya perlu mencari tanggal "kemarin" dalam format ini MMDDYYdengan Python.

Jadi misalnya, tanggal hari ini akan diwakili seperti ini: 111009

Saya dapat dengan mudah melakukan ini untuk hari ini tetapi saya kesulitan melakukannya secara otomatis untuk "kemarin".

y2k
sumber

Jawaban:

387

Menggunakan datetime.timedelta()

>>> from datetime import date, timedelta
>>> yesterday = date.today() - timedelta(days=1)
>>> yesterday.strftime('%m%d%y')
'110909'
Jarret Hardie
sumber
1
Jika Anda kebetulan menggunakan panda, Anda juga dapat menggunakan:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
etna
Jika Anda kebetulan mencari opsi, Anda juga dapat menggunakan Pendulum ( pendulum.eustace.io ): pendulum.now (). Kurangi (hari = -1) .trftime ('% m% d% y')
AFD
165
from datetime import datetime, timedelta

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

Ini harus melakukan apa yang Anda inginkan:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")
Stef
sumber
1
Mengapa Anda lebih peduli tentang tanggal untuk orang-orang di UTC mengimbangi 0 daripada tanggal di zona waktu lokal sistem?
Jeffrey Harris
1
Saya menyalinnya dari kode saya, dalam penggunaan basis data Anda sering peduli tentang UTC. Menghapus hal-hal UTC.
Stef
7

semua jawaban benar, tetapi saya ingin menyebutkan bahwa delta waktu menerima argumen negatif .

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

Bisakah saya membuat ini agak lebih internasional dan memformat tanggal sesuai dengan standar internasional dan tidak dalam bulan-hari-tahun yang aneh, yang umum di AS?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')
Arvid Bäärnhielm
sumber
Setuju bahwa kami menggunakan format tanggal aneh di Amerika, tetapi OP secara khusus meminta format aneh itu - yang dalam hal ini adalah `'% m% d% y'.
DaveL17
@ DaveL17, titik adil. Saya akan meninggalkan jawaban untuk semua di luar AS yang menemukan pertanyaan ini.
Arvid Bäärnhielm
2

Untuk memperluas jawaban yang diberikan oleh Chris

jika Anda ingin menyimpan tanggal dalam variabel dalam format tertentu, ini adalah cara terpendek dan paling efektif sejauh yang saya tahu

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

Jika Anda menginginkannya sebagai integer (yang dapat bermanfaat)

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