我从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=
具体来说,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():
原文链接:https://www.f2er.com/python/438752.htmldatetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
timestamp_from_bigquery.strftime('%Y-%m-%dT%H:%M:%S.%fZ')
当然要确保日期时间在正确的时区.