[英]How to write a python function that returns date 30 days ago from given date
嗨,我是 python 的新手,我正在嘗試編寫一個 function 從給定日期返回 30 天前的日期。 我的 function 有兩個參數,如下所示:
import datetime
def get_date_x_days_ago (x_days_ago, date_from = None):
d = datetime.timedelta(days=x_days_ago)
if date_from is None:
date_from = datetime.today()
else:
datetime.datetime.strptime(date_from, "YYYY-mm-dd")
return date_from - d
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
我似乎無法讓 function 按預期工作
您需要將解析后的日期從strptime
分配給date_from
變量。
另外,相應的日期格式代碼參見https://www.programiz.com/python-programming/datetime/strptime (在“格式代碼列表”下),即“%Y”表示年份和世紀。
import datetime
def get_date_x_days_ago (x_days_ago, date_from = None):
d = datetime.timedelta(days=x_days_ago)
if date_from is None:
date_from = datetime.datetime.today()
else:
date_from = datetime.datetime.strptime(date_from, "%Y-%m-%d")
# ^^^^ missing assignment
return date_from - d
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
因為您要找到從某個日期到 x 天前的某個日期。 因此,首先,將您的date_from
轉換為僅日期,然后用x_days
減去。
from datetime import timedelta, datetime, date
def get_date_x_days_ago(x_days_ago, date_from=None):
return datetime.strptime(date_from, '%Y-%m-%d').date() - timedelta(x_days_ago) if date_from else date.today()-timedelta(x_days_ago)
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
Output
get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11")
2020-10-12
get_date_x_days_ago(x_days_ago=30)
2021-03-12
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.