问题描述
我在 csv 文件中有如下日期,我想将其加载到具有相同格式的 avro 文件中,
日期值:
2020-01-29 21:08:53.0041 +00:00
我尝试转换的格式如下:
%d.%m.%Y %H:%M:%s.%f +%h:%m
在 avro 文件中加载为 null。
我在avro中提到的架构如下:
{
"name": "requestdate","type": [
"null","long"
],"default": null,"logicalType": "timestamp-millis","doc": "requestdate"
谁能帮我加载正确的格式
谢谢
解决方法
您可以使用 datetime
strptime
方法。但是时区字段无效,因此您应该删除它的分号。您可以使用正则表达式来修复时区字段。
from datetime import datetime
import re
# example
dt = '2020-01-29 21:08:53.0041 +00:00'
# remove semicolon in timezone field
dt = re.sub(r"([+-]\d+):(\d+)$",r"\1\2",dt)
# parse
value = datetime.strptime(dt,'%Y-%m-%d %H:%M:%S.%f %z')
print(value)
输出
2020-01-29 21:08:53.004100+00:00