Python 中的日期时间库为 YYYY-MM-DD 提供了不正确的格式,导致嵌入 API 调用后出错
Datetime library in Python giving incorrect format for YYYY-MM-DD resulting in error after embedding in API call
我是 python 的新手,正在尝试使用 Sendgrid api 和日期时间库:
要尝试提取电子邮件统计信息,我的代码是:
import http.client
conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"
headers = { 'authorization': "Bearer SG.***" }
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=2020-01-14", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
此代码有效,我收到了我想要的输出,但是,我想创建此应用程序,使其每天通过任务计划程序运行并生成报告,而无需 nme 手动更改开始日期。
我试过了:
from datetime import date
today = date.today()
如果我打印(今天)它会给我确切的格式 20120-01-14 但如果我今天直接打电话它说
today
Out[37]: datetime.date(2020, 1, 14)
下面我尝试将 "today" 作为我的开始日期,但出现格式错误
import http.client
conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"
headers = { 'authorization': "Bearer SG.***" }
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=today", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
但是,这给了我一个错误:{"errors":[{"message":"start_date is required and should be a YYYY-MM-DD formatted date"}]}
我该怎么做才能在 start_date 中输入当前日期,而无需我手动更改它?
试试这个:
date.today().strftime('%Y-%m-%d')
并将此行更改为:
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=today", payload, headers)
对此:
conn.request("GET", "/v3/stats?aggregated_by=day&start_date={}".format(today), payload, headers)
改变
"/v3/stats?aggregated_by=day&start_date=today"
到
f"/v3/stats?aggregated_by=day&start_date={str(today)}"
或者如果您使用的是 3.6
之前的 Python
"/v3/stats?aggregated_by=day&start_date={}".format(str(today))
这是
'2020-01-14'
它会起作用的!
我是 python 的新手,正在尝试使用 Sendgrid api 和日期时间库:
要尝试提取电子邮件统计信息,我的代码是:
import http.client
conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"
headers = { 'authorization': "Bearer SG.***" }
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=2020-01-14", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
此代码有效,我收到了我想要的输出,但是,我想创建此应用程序,使其每天通过任务计划程序运行并生成报告,而无需 nme 手动更改开始日期。
我试过了:
from datetime import date
today = date.today()
如果我打印(今天)它会给我确切的格式 20120-01-14 但如果我今天直接打电话它说
today
Out[37]: datetime.date(2020, 1, 14)
下面我尝试将 "today" 作为我的开始日期,但出现格式错误
import http.client
conn = http.client.HTTPSConnection("api.sendgrid.com")
payload = "{}"
headers = { 'authorization': "Bearer SG.***" }
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=today", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
但是,这给了我一个错误:{"errors":[{"message":"start_date is required and should be a YYYY-MM-DD formatted date"}]}
我该怎么做才能在 start_date 中输入当前日期,而无需我手动更改它?
试试这个:
date.today().strftime('%Y-%m-%d')
并将此行更改为:
conn.request("GET", "/v3/stats?aggregated_by=day&start_date=today", payload, headers)
对此:
conn.request("GET", "/v3/stats?aggregated_by=day&start_date={}".format(today), payload, headers)
改变
"/v3/stats?aggregated_by=day&start_date=today"
到
f"/v3/stats?aggregated_by=day&start_date={str(today)}"
或者如果您使用的是 3.6
之前的 Python"/v3/stats?aggregated_by=day&start_date={}".format(str(today))
这是
'2020-01-14'
它会起作用的!