การจัดรูปแบบวันที่ "เมื่อวาน" ในไพ ธ อน


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 ( pendulum.eustace.io ): pendulum.now (). ลบ (วัน = -1). strftime ('% 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 ออก
Stef

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')

ยอมรับว่าเราใช้รูปแบบวันที่แปลกในสหรัฐอเมริกา แต่ OP ขอรูปแบบแปลก ๆ - ซึ่งในกรณีนี้คือ `'% 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.