簡體   English   中英

如何編寫從給定日期返回 30 天前的日期的 python function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM