2015-05-27 17 views
10

Là đầu vào cho yêu cầu API, tôi cần nhận ngày hôm qua dưới dạng chuỗi ở định dạng YYYY-MM-DD. Tôi có phiên bản đang hoạt động là:Python - Nhận ngày hôm qua dưới dạng chuỗi ở định dạng YYYY-MM-DD

yesterday = datetime.date.fromordinal(datetime.date.today().toordinal()-1) 
report_date = str(yesterday.year) + \ 
    ('-' if len(str(yesterday.month)) == 2 else '-0') + str(yesterday.month) + \ 
    ('-' if len(str(yesterday.day)) == 2 else '-0') + str(yesterday.day) 

Phải có cách thanh lịch hơn để thực hiện việc này, quan tâm đến mục đích giáo dục nhiều như bất kỳ mục đích nào khác!

+4

Bạn có thể xem xét điều này: http://stackoverflow.com/questions/1712116/formatting-yesterdays-date-in-python?rq=1 và chỉ sửa đổi chuỗi định dạng – EdChum

+1

Cảm ơn Ed là chúng tôi eful - đã tự tìm kiếm, hứa ....... – Jacob

Trả lời

15

Bạn chỉ cần trừ một ngày kể từ ngày hôm nay. datetime.timedelta(1) sẽ nhận bạn timedelta object là khoảng thời gian một ngày và có thể thu được từ đối tượng datetime. Sau đó, bạn có thể sử dụng datetime.strftime trong orer để chuyển đổi các đối tượng ngày để chuỗi dựa trên của bạn espected format:

>>> from datetime import datetime, timedelta 
>>> datetime.strftime(datetime.now() - timedelta(1), '%Y-%m-%d') 
'2015-05-26' 

Lưu ý rằng thay vì gọi datetime.strftime chức năng, bạn cũng có thể trực tiếp sử dụng strftime phương pháp datetime đối tượng:

>>> (datetime.now() - timedelta(1)).strftime('%Y-%m-%d') 
'2015-05-26' 
2
>>> import datetime 
>>> datetime.date.fromordinal(datetime.date.today().toordinal()-1).strftime("%F") 
'2015-05-26' 
Các vấn đề liên quan