Python中的Datetime库为YYYY-MM-DD提供了不正确的格式,导致嵌入API调用后出错

Python中的Datetime库为YYYY-MM-DD提供了不正确的格式,导致嵌入API调用后出错,python,datetime,format,sendgrid-api-v3,Python,Datetime,Format,Sendgrid Api V3,我是python新手,正在尝试使用Sendgrid api和datetime库: 要尝试提取电子邮件统计信息,我的代码是: import http.client conn = http.client.HTTPSConnection("api.sendgrid.com") payload = "{}" headers = { 'authorization': "Bearer SG.***" } conn.request("GET", "/v3/stats?aggregated_by=day

我是python新手,正在尝试使用Sendgrid api和datetime库:

要尝试提取电子邮件统计信息,我的代码是:

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)
下面我试着把“今天”作为我的开始日期,但得到了格式错误

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是必需的,应该是YYYY-MM-DD格式的日期”}]}

我怎样才能输入开始日期,使其始终拾取当前日期,而无需我手动更改它?

尝试以下方法:

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"

或者,如果您使用的是Python 3.6之前的版本,也可以这样做

"/v3/stats?aggregated_by=day&start_date={}".format(str(today))
那是

‘2020-01-14’


它会起作用的

它应该是
“/v3/stats?聚合的\u by=day&start\u date={}”。格式(str(今天))
相同的错误{“errors”:[{“message”:“start\u date是必需的,应该是YYYY-MM-DD格式的日期”}}@hartvillezillow
str(今天)的输出是什么
适合您?2020-01-14是输出我希望添加结束日期,但我希望开始日期和结束日期为同一天。在上面的代码“end_date”@hartvillezillow中,我在哪里可以添加它作为一个额外的
GET
param,但是你可以使用名称:
“/v3/stats?aggregated_by=day&start_date={d}&end_date{d}。format(d=today)
它确实给了我一个输出,但不是我想要的输出。问题是,如果我没有将开始日期和结束日期设置为今天,那么出于某种原因,我还会在输出中获得2020-01-16的信息。我只想要今天,也就是2020-01年-15@hartvillezillow嗯,这看起来像是API本身的问题,您可能会遇到时区或其他问题。您应该查看一下API的文档。
"/v3/stats?aggregated_by=day&start_date={}".format(str(today))