1

是否有一种简单/有效的方法可以将“当前 Solr 日期”转换为如下所示的“所需输出”?我曾想过使用正则表达式或字符串方法来清理 Solr 日期,但如果在 Python 中有一种方法可以将这些日期从 Solr 转换过来,那就太好了。

当前Solr 日期:

'2020-01-21T12:23:54.625Z'

所需的输出(以datetime模块格式):


'2020-01-21 12:23:54' 
4

1 回答 1

2

这是从字符串到日期时间对象再到字符串的快速往返,包括几个选项。希望这能让你继续前进。

字符串 → 日期时间(保留微秒)

from datetime import datetime

s = '2020-01-21T12:23:54.625Z'

# to datetime object, including the Z (UTC):
dt_aware = datetime.fromisoformat(s.replace('Z', '+00:00'))
print(repr(dt_aware))
# datetime.datetime(2020, 1, 21, 12, 23, 54, 625000, tzinfo=datetime.timezone.utc)

# to datetime object, ignoring Z:
dt_naive = datetime.fromisoformat(s.strip('Z'))
print(repr(dt_naive))
# datetime.datetime(2020, 1, 21, 12, 23, 54, 625000)

日期时间→字符串(微秒剥离)

# to isoformat string, space sep, no UTC offset, no microseconds
print(dt_aware.replace(microsecond=0, tzinfo=None).isoformat(' '))
# 2020-01-21 12:23:54
print(dt_naive.replace(microsecond=0).isoformat(' '))
# 2020-01-21 12:23:54

# ...or with a Z to specify UTC and a T as date/time separator
print(dt_aware.replace(microsecond=0).isoformat().replace('+00:00', 'Z'))
# 2020-01-21T12:23:54Z

# to isoformat string, with Z for UTC, naive / no tzinfo:
print(dt_naive.replace(microsecond=0).isoformat() + 'Z') # just add Z as a suffix
# 2020-01-21T12:23:54Z

如果您需要特定的精度,例如毫秒,您可能还想查看 datetime.isoformat 的timespec kwarg 。

于 2021-03-10T12:23:49.080 回答