如何在 python 中转换 '22-Jul-2020 14:00 (GMT 4.30) '“22 7 2020”

how to convert '22-Jul-2020 14:00 (GMT 4.30) ' "22 7 2020 " in python

我想按顺序将 22-Jul-2020 14:00 (GMT 4.30) 转换为 22 7 2020 将其插入我的数据库。

非常感谢您的帮助。

你可以使用正则表达式来完成,但我想在这种情况下使用 replace() 方法,它会将一些东西替换成如下的东西:

date = "22-Jul-2020 14:00"
newDate = date.replace("-", " ")[:11]
print(newDate)

输出:

22 Jul 2020

详细了解 Replace()

科丁快乐!

您想使用strftime() and strptime()

strptime 用于将您的日期字符串更改为 datetime 格式。 strftime 然后将其转换回另一个格式化的字符串,假设这是您想要做的。

from datetime import datetime

s = '22-Jul-2020 14:00 (GMT 4.30)'

dt = datetime.strptime(s, '%d-%b-%Y %H:%M (%Z 4.30)')

out = dt.strftime('%d %m %Y')

print(out)

Returns

22 07 2020

一个问题是 strptime 会在最后格式化偏移量 (GMT 4.30) 的方式上遇到困难。由于术语 'GMT' 是检索时区所需的全部内容,我建议使用 regex 去除其余部分 - 如果时区对您很重要。

import re
from datetime import datetime

s = '22-Jul-2020 14:00 (GMT 4.30)'

s_stripped = re.sub('\(([A-Z]+).+\)', r'', s)
# s_stripped is '22-Jul-2020 14:00 GMT'

dt = datetime.strptime(s_stripped, '%d-%b-%Y %H:%M %Z')

out = dt.strftime('%d %m %Y')

print(out)

如果只想保留字符串中的日期部分,可以使用:

from datetime import datetime


s = "22-Jul-2020 14:00 (GMT 4.30)"
d = datetime.strptime(s.split()[0], "%d-%b-%Y")
desired_output = '{d.day} {d.month} {d.year}'.format(d=d)
print(desired_output)
x = datetime.strftime(d, "%d %m %Y")
print(x)

输出:

22 7 2020
22 07 2020

从字符串创建 datetime 对象后,我展示了字符串格式化和 strftime 以将 datetime 转换为所需格式。如您所见,strftime returns 一个零填充月份,您的情况不需要。

参考: