2017-09-05 142 views
5

Tôi muốn biết nếu insertion_date cũ hơn 30 ngày. Điều này sẽ phát hiện xuống đến phút và giây của thời gian hiện tại. Giá trị trong insertion_date sẽ được lấy động từ API.Tìm hiểu xem một ngày có hơn 30 ngày tuổi

Mã hiện tại chỉ phát hiện đến ngày, tôi cần độ chính xác đến tối đa.

import datetime 
import dateutil.parser 

insertion_date = dateutil.parser.parse('2017-08-30 14:25:30') 
right_now_30_days_ago = datetime.datetime.today() - datetime.timedelta(days=30) 

print right_now_30_days_ago #2017-08-31 12:18:40.040594 
print insertion_date #2017-08-30 14:25:30 

if insertion_date > right_now_30_days_ago: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
+0

Theo tài liệu, một timedelta là * Một thời gian thể hiện sự khác biệt giữa hai ngày, giờ, hoặc trường datetime ** để micro có độ phân giải ***. , do đó bạn có một cái gì đó sai –

+0

Franco, tôi yêu cầu bạn xem xét lại sự chấp nhận của bạn. Người dùng này đã bị phát hiện nội dung ăn cắp nhiều lần. Tôi khá chắc chắn câu trả lời này cũng đã được đạo văn trong một số hình thức từ một câu trả lời. Nhấp vào hồ sơ của họ và xem. –

Trả lời

5

bạn cần phải làm điều gì đó trên dòng tương tự:

from datetime import datetime, timedelta 
time_between_insertion = datetime.now() - insertion_date 

if time_between_insertion.days>30: 
    print "The insertion date is older than 30 days" 

else: 
    print "The insertion date is not older than 30 days" 
3
from datetime import datetime, timedelta 

print(datetime.now()) 
datetime.datetime(2017, 9, 5, 7, 25, 37, 836117) 

print(datetime.now() - timedelta(days=30)) 
datetime.datetime(2017, 8, 6, 7, 25, 51, 723674) 

Như bạn có thể thấy ở đây, nó là chính xác xuống giây.

Sự cố xảy ra ở datetime.today(). Bạn nên sử dụng datetime.now() thay vì datetime.today():

time_since_insertion = datetime.now() - insertion_date 

if time_since_insertion.days > 30: 
    print("The insertion date is older than 30 days") 
else: 
    print("The insertion date is not older than 30 days") 

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan