如何将字符串日期转换为 dateobject 并在字符串日期值为 2021-01-22T11:36:52.387000+01:00 格式时获取年份和日期时间?

时间:2021-02-16 02:24:34

标签: python python-dateutil

我试过了:

 timestamp = "2021-01-22T11:36:52.387000+01:00"
 timestampObject = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S')

但是给了我错误:

<块引用>

ValueError:未转换的数据仍然存在:.150000+01:00

其余部分是什么,我如何转换其余部分?还有“T”是什么意思?

3 个答案:

答案 0 :(得分:1)

因为您还必须提供格式说明符来处理尾随微秒和时区说明符,就像错误告诉您的那样,请参阅 Conversion of datetime string with microseconds...milliseconds。可能你需要dict.values()。请参阅日期时间文档。

此外,“T”仅代表“时间”;它将日期字段与时间字段分开,以便于解析(使用 sed/perl/grep/regex/etc.)。如果您想 a) 在日志中定位日期时间或 b) 丢弃/分离时间部分与日期部分,则可以轻松实现。

答案 1 :(得分:1)

您拥有的字符串格式实际上是 ISO 格式的日期时间。幸运的是 datetime 有一个函数来处理这个问题,你不必担心为尾随时间对象提供格式说明符...

你只想要日期吗?

>>> datetime.datetime.fromisoformat("2021-01-22T11:36:52.387000+01:00").date()
datetime.date(2021, 1, 22)

或者你想要日期时间?

>>> datetime.datetime.fromisoformat("2021-01-22T11:36:52.387000+01:00")
datetime.datetime(2021, 1, 22, 11, 36, 52, 387000, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600)))

答案 2 :(得分:0)

这对我有用:

timestampObject = datetime.fromisoformat(
 "2021-01-22T11:36:52.387000+01:00" ).date()

 print('timestampObject.year: ', timestampObject.year) 
<块引用>

timestampObject.year:2021