当字符串日期值的格式为 2021-01-22T11:36:52.387000+01:00 with datetime 时,如何将字符串日期转换为日期对象并获取年份?
How to convert string date to dateobject and get the year when string date value is in format 2021-01-22T11:36:52.387000+01:00 with datetime?
我试过这个:
timestamp = "2021-01-22T11:36:52.387000+01:00"
timestampObject = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S')
但是给了我错误:
ValueError: unconverted data remains: .150000+01:00
其余部分代表什么,如何转换其余部分?还有 'T' 是什么意思?
因为您还必须 提供一个格式说明符来处理尾随的微秒和时区说明符,就像错误告诉您的那样,请参阅 Conversion of datetime string with microseconds and 。可能你需要 '.fZ'
。请参阅日期时间文档。
此外,'T' 仅代表 'Time';它将日期字段与时间字段分开,以便于解析(sed/perl/grep/regex/etc)。如果您想 a) 在日志中找到日期时间或 b) 从日期部分抛出 away/separate 时间部分,这将变得很容易。
您的字符串格式实际上是 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)))
这对我有用:
timestampObject = datetime.fromisoformat(
"2021-01-22T11:36:52.387000+01:00" ).date()
print('timestampObject.year: ', timestampObject.year)
timestampObject.year: 2021
我试过这个:
timestamp = "2021-01-22T11:36:52.387000+01:00"
timestampObject = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S')
但是给了我错误:
ValueError: unconverted data remains: .150000+01:00
其余部分代表什么,如何转换其余部分?还有 'T' 是什么意思?
因为您还必须 提供一个格式说明符来处理尾随的微秒和时区说明符,就像错误告诉您的那样,请参阅 Conversion of datetime string with microseconds and '.fZ'
。请参阅日期时间文档。
此外,'T' 仅代表 'Time';它将日期字段与时间字段分开,以便于解析(sed/perl/grep/regex/etc)。如果您想 a) 在日志中找到日期时间或 b) 从日期部分抛出 away/separate 时间部分,这将变得很容易。
您的字符串格式实际上是 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)))
这对我有用:
timestampObject = datetime.fromisoformat(
"2021-01-22T11:36:52.387000+01:00" ).date()
print('timestampObject.year: ', timestampObject.year)
timestampObject.year: 2021