如何在python的Google Fit API中获取用于过滤结果的日期的日期格式?

问题描述

我正在尝试使用here所记录的会话的Google API文档提供的示例作为参考来进行GET查询,

curl --header "Authorization: Bearer ya29.1.yourtokenvalue" -X GET \
--header "Content-Type: application/json;encoding=utf-8" \
"https://www.googleapis.com/fitness/v1/users/me/sessions?startTime=2014-04-01T00:00:00.000Z&endTime=2014-04-30T23:59:59.999Z"

您会看到以下格式的日期:

2014-04-01T00:00:00.000Z

我目前正在使用python构建日期,如下所示: 从datetime导入datetime,timedelta

PREVIOUS_DAYS=1
end = datetime.now().replace(minute=0,second=0)
start = end_date - timedelta(days = PREVIOUS_DAYS)
end_date = datetime.fromtimestamp(end).astimezone().strftime('%Y-%m-%dT%H:%M:%S.')
start_date = datetime.fromtimestamp(start).astimezone().strftime('%Y-%m-%dT%H:%M:%S.')
print str(start_date)

我不知道de T是什么意思,在strftime documentation的时间戳结尾,我找不到多少毫秒。我也无法在google API文档中找到有关它的任何信息,所以也许这只是我所希望知道的一个标准?

解决方法

看起来这是称为ISO 8601的标准格式。 Python支持使用isoformat函数以这种格式对任何datetime对象进行编码。 您将看到的唯一区别是“ Z”后缀,这表示时区为UTC。 Python将使用不同的符号“ +00:00”,这也是标准可接受的符号。

<option name="charting.chart.showMarkers">true</option>

如果您真的想保留“ Z”后缀,可以手动剥离“ +00:00”并添加“ Z”,但是我相信这不是必需的。

>>> from datetime import datetime,timezone
>>> datetime.now(timezone.utc).isoformat()
2014-04-01T00:00:00.000+00:00

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...