Python中的日期格式,带有偏移量和小时和分钟

问题描述

我在 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