我正在尝试使用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文档中也找不到任何关于时间戳末尾毫秒的信息。我也无法在谷歌API文档中找到任何信息,所以这可能只是我希望知道的一个标准?
看起来这是一种称为ISO 8601的标准格式。Python支持使用isoformat函数以这种格式对任何日期时间对象进行编码。你将看到的唯一区别是";Z";后缀,表示时区为UTC。Python将使用不同的表示法"+00:00";这也是标准可接受的。
>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).isoformat()
2014-04-01T00:00:00.000+00:00
如果你真的想保留";Z";postfix,可以手动剥离"+00:00";,并添加一个";Z";,但我相信这没有必要。
>>> from datetime import datetime, timezone
>>> datetime.now(timezone.utc).isoformat()[:-6] + "Z"
2014-04-01T00:00:00.000Z