python – 需要帮助格式化Google API的日期时区

我从bigquery记录中检索了一个日期时间(使用google.cloud.bigquery库),需要根据this api method的’startTime’参数将其发送到rfc 3339格式的google admin sdk报告API.API期待datetime看起来像这样:

2010-10-28T10:26:35.000Z

通常可以通过创建没有tzinfo的python datetime并调用isoformat来实现这一点:

>>> now = datetime.utcnow()
>>> now = now.isoformat("T") + "Z"
>>> now
'2017-06-01T13:05:32.586760Z'

我遇到的问题是来自BigQuery的时间戳包含一个tzinfo对象,这导致isoformat返回Google API无法处理的文本.

>>> timestamp_from_bigquery
'datetime.datetime(2017, 5, 31, 16, 13, 26, 252000, tzinfo=<UTC>)'
>>> timestamp_from_bigquery.isoformat("T") + "Z"
'2017-05-31T16:13:26.252000+00:00Z'

具体来说,Google的API不接受00:00作为startTime.如果我从字符串手动删除00:00 API调用工作,但我不知道如何在没有丑陋的字符串黑客的情况下在python中执行此操作.有没有一些干净的方法从datetime对象中删除它?

我也尝试了这个,但结果相同:

>>> timestamp_from_bigquery.replace(tzinfo=None)
'2017-05-31T16:13:26.252000+00:00Z'
最佳答案
使用datetime.datetime.strftime():

datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
timestamp_from_bigquery.strftime('%Y-%m-%dT%H:%M:%S.%fZ')

当然要确保日期时间在正确的时区.

转载注明原文:python – 需要帮助格式化Google API的日期时区 - 代码日志