在 Python 中获取前一天的数据

get the data for the previous day in Python

我是 Python 的新手,需要从 RESTAPI 中提取前一天的数据,在我的 RESTAPI 请求中,我需要提供 QueryStartDateQueryEndDate。到目前为止,为了测试,我手动提供了前一天的日期 (sysdate-1)。但是现在我想自动化这个过程,我想应用 Python 函数来始终获取前一天的日期,这样我就可以提取前一天的全天数据。

我使用的是 UTC 时区,所以这部分 T12:00:00.000Z 我需要保留原样,否则我对 RESTAPI 的请求不会 运行。所以我只需要更改日期部分。

"QueryStartDate": "2021-09-02T12:00:00.000Z"
"QueryEndDate": "2021-09-02T12:10:00.000Z"

我尝试应用 datetime.now() - timedelta(1) 函数来获取前一天的日期,但由于语法问题不确定 RESTAPI 请求是否抛出错误。

使用这些代码行可能会帮助您找到前一天

import datetime
Previous_Date = datetime.datetime.today() - datetime.timedelta(days=1)
print (Previous_Date)

如果您使用的是 UTC 时区,请尝试:

from datetime import datetime, timedelta, timezone
todayUTC = datetime.now(timezone.utc).date()
yesterdayUTC = today - timedelta(1)
print(todayUTC, yesterdayUTC)

如果您需要格式为前一天的字符串值:

  • 格式 1:"2021-09-02T00:00:00.000000+0000"
  • 格式 2:"2021-09-02T00:00:00.000000Z"

从开始时间00:00:00.000000到结束时间23:59:59.999999,可以使用datetime.strftime() along with the time.min and time.max:

from datetime import datetime, time, timedelta, timezone

yesterday_dt = datetime.now(timezone.utc) - timedelta(days=1)
yesterday_start_dt = datetime.combine(yesterday_dt, time.min, tzinfo=timezone.utc)
yesterday_end_dt = datetime.combine(yesterday_dt, time.max, tzinfo=timezone.utc)

format1 = "%Y-%m-%dT%H:%M:%S.%f%z"
format2 = "%Y-%m-%dT%H:%M:%S.%fZ"

queryStartDate_format1 = yesterday_start_dt.strftime(format1)
queryEndDate_format1 = yesterday_end_dt.strftime(format1)
print("Format 1:")
print(queryStartDate_format1)
print(queryEndDate_format1)

queryStartDate_format2 = yesterday_start_dt.strftime(format2)
queryEndDate_format2 = yesterday_end_dt.strftime(format2)
print("Format 2:")
print(queryStartDate_format2)
print(queryEndDate_format2)

输出

Format 1:
2021-09-02T00:00:00.000000+0000
2021-09-02T23:59:59.999999+0000
Format 2:
2021-09-02T00:00:00.000000Z
2021-09-02T23:59:59.999999Z

更新

如果导入是基于根的,这里是一个版本datetime

import datetime

yesterday_dt = datetime.datetime.now(datetime.timezone.utc) - datetime.timedelta(days=1)
yesterday_start_dt = datetime.datetime.combine(yesterday_dt, datetime.time.min, tzinfo=datetime.timezone.utc)
yesterday_end_dt = datetime.datetime.combine(yesterday_dt, datetime.time.max, tzinfo=datetime.timezone.utc)

format1 = "%Y-%m-%dT%H:%M:%S.%f%z"
format2 = "%Y-%m-%dT%H:%M:%S.%fZ"

queryStartDate_format1 = yesterday_start_dt.strftime(format1)
queryEndDate_format1 = yesterday_end_dt.strftime(format1)
print("Format 1:")
print(queryStartDate_format1)
print(queryEndDate_format1)

queryStartDate_format2 = yesterday_start_dt.strftime(format2)
queryEndDate_format2 = yesterday_end_dt.strftime(format2)
print("Format 2:")
print(queryStartDate_format2)
print(queryEndDate_format2)