Định dạng ngày hôm qua, ngày hôm qua trong python


232

Tôi cần tìm ngày "của ngày hôm qua" ở định dạng này MMDDYYbằng Python.

Vì vậy, ví dụ, ngày hôm nay sẽ được đại diện như thế này: 111009

Tôi có thể dễ dàng làm điều này cho ngày hôm nay nhưng tôi gặp khó khăn khi thực hiện nó cho "ngày hôm qua".

Câu trả lời:


387

Sử dụng datetime.timedelta()

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

1
Nếu bạn tình cờ làm việc với gấu trúc, bạn cũng có thể sử dụng:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
etna

Nếu bạn tình cờ tìm kiếm các tùy chọn, bạn cũng có thể sử dụng Pendulum ( Pendulum.eustace.io ): Pendulum.now (). Trừ (ngày = -1) .strftime ('% m% d% y')
AFD

165
from datetime import datetime, timedelta

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

21

Điều này sẽ làm những gì bạn muốn:

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

1
Tại sao bạn quan tâm nhiều hơn về ngày dành cho những người ở UTC bù 0 so với ngày trong múi giờ địa phương của hệ thống?
Jeffrey Harris

1
Tôi đã sao chép nó từ mã của tôi, trong việc sử dụng cơ sở dữ liệu bạn thường quan tâm đến UTC. Đã xóa các công cụ UTC.
Bắt đầu

7

tất cả các câu trả lời đều đúng, nhưng tôi muốn đề cập rằng delta thời gian chấp nhận các đối số phủ định .

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

5

Tôi chỉ có thể làm cho điều này quốc tế hơn một chút và định dạng ngày theo tiêu chuẩn quốc tế chứ không phải trong tháng kỳ lạ, đó là điều phổ biến ở Mỹ?

from datetime import datetime, timedelta

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

Đồng ý rằng chúng tôi sử dụng định dạng ngày kỳ lạ ở Hoa Kỳ, nhưng OP đặc biệt yêu cầu định dạng kỳ lạ đó - trong trường hợp này là ''% m% d% y '.
DaveL17

@ DaveL17, điểm công bằng. Tôi sẽ để lại câu trả lời cho tất cả bên ngoài Hoa Kỳ, những người vấp phải câu hỏi này.
Arvid Bäärnhielm

2

Để mở rộng câu trả lời của Chris

Nếu bạn muốn lưu trữ ngày trong một biến theo một định dạng cụ thể, đây là cách ngắn nhất và hiệu quả nhất theo như tôi biết

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

Nếu bạn muốn nó như một số nguyên (có thể hữu ích)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.