Python 将2020-09-01T00:00:00-05:00时间戳转换为dd mm yyyy

Python 将2020-09-01T00:00:00-05:00时间戳转换为dd mm yyyy,python,datetime,Python,Datetime,嗨,我正在尝试转换以下时间格式 2020-08-28T13:42:00.298363-05:00 到 我正在使用以下代码,但它不起作用 from datetime import datetime start_time = "2020-08-28T13:42:00.298363-05:00" start_period_obj = datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%f.%-s-%z) print(

嗨,我正在尝试转换以下时间格式

2020-08-28T13:42:00.298363-05:00

我正在使用以下代码,但它不起作用

from datetime import datetime
 
start_time = "2020-08-28T13:42:00.298363-05:00"
start_period_obj = datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%f.%-s-%z)
    print(start_period_obj)
输出是

File "time conveter.py", line 19
    start_period_obj = datetime.strptime(start_time, "%Y-%m-%dT%H:%M:%f.%-s-%z)
                                                                              ^
SyntaxError: EOL while scanning string literal

您的代码缺少datetime格式字符串末尾的结束引号,这导致出现错误消息。正如@ChrisCharley所指出的,实际格式字符串也有问题

start\u period\u obj=datetime.strtime(开始时间,“%Y-%m-%dT%H:%m:%f.%-s-%z)

应该是
start\u period\u obj=datetime.strtime(start\u time,“%Y-%m-%dT%H:%m:%S.%f%z”)

要生成所需格式,您可以使用:

start\u period\u obj.strftime(“%d-%b-%Y”)


有关完整详细信息,请参见此处。

您的代码缺少datetime格式字符串末尾的结束引号,这导致了您看到的错误消息。正如@ChrisCharley所指出的,实际格式字符串也存在问题

start\u period\u obj=datetime.strtime(开始时间,“%Y-%m-%dT%H:%m:%f.%-s-%z)

应该是
start\u period\u obj=datetime.strtime(start\u time,“%Y-%m-%dT%H:%m:%S.%f%z”)

要生成所需格式,您可以使用:

start\u period\u obj.strftime(“%d-%b-%Y”)

有关详细信息,请参见此处

from datetime import datetime
 
start_time = "2020-08-28T13:42:00.298363-05:00"

#removing the time information since, you don't want in the final output anyway
start_time  = start_time.split('T')[0]
start_period_obj = datetime.strptime(start_time, "%Y-%m-%d")
start_period_obj = start_period_obj.strftime("%d-%b-%Y")
print(start_period_obj)
或者这一行:

start_period_obj = datetime.strptime(start_time.split('T')[0], "%Y-%m-%d").strftime("%d-%b-%Y")
print(start_period_obj)
输出

'28-Aug-2020'
试试这个:

from datetime import datetime
 
start_time = "2020-08-28T13:42:00.298363-05:00"

#removing the time information since, you don't want in the final output anyway
start_time  = start_time.split('T')[0]
start_period_obj = datetime.strptime(start_time, "%Y-%m-%d")
start_period_obj = start_period_obj.strftime("%d-%b-%Y")
print(start_period_obj)
或者这一行:

start_period_obj = datetime.strptime(start_time.split('T')[0], "%Y-%m-%d").strftime("%d-%b-%Y")
print(start_period_obj)
输出

'28-Aug-2020'


我已经添加了一个答案,如果有效,请勾选并投票。@ChrisCharley请向我解释反对票?有人试过运行代码吗?@Grayrigel我没有投票支持你的帖子。@Grayrigel我投票支持你,尽管我没有看到它改变。我不知道为什么它没有改变这回答了你的问题吗?我已经添加了一个答案,如果有效,请勾选并投票。@ChrisCharley请向我解释反对票?有人试过运行代码吗?@Grayrigel我没有投票支持你的帖子。@Grayrigel我投票支持你,尽管我没有看到它改变。我不知道为什么它没有改变这回答了你的问题吗?解析字符串应为
%Y-%m-%dT%H:%m:%S.%f%z“
感谢您对原始解析字符串的更正,我在操作中遗漏了不正确的部分。解析字符串应为
%Y-%m-%dT%H:%m:%S.%f%z”
感谢您对原始解析字符串的更正,我错过了OP中不正确的部分。这是一个单行程序(Python 3.7)<代码>日期时间。来自isoformat(“2020-08-28813:42:00.298363-05:00”)。strftime(“%d-%b-%Y”)谢谢。嗯,我不知道。使用
strtime
strftime
添加了一行解决方案,速度可能较慢,但有效。好吧,我的评论可能有误导性,我不是有意提出一行,因为它是一行;-)<在我看来,code>fromisoformat更具可读性。我理解您并非有意提出一行解决方案。只是我随机不喜欢发布这个解决方案,我不知道为什么。所以,我想这可能是一条线的人。我同意ISOFORMAT的
显然更具可读性是一个更好的选择。谢谢。好吧,最好不要想太多关于获得否决票的事。另一方面,我不允许自己不发表评论就投反对票。在本例中,我只留下了注释^^这是一个单行程序(Python 3.7)<代码>日期时间。来自isoformat(“2020-08-28813:42:00.298363-05:00”)。strftime(“%d-%b-%Y”)
谢谢。嗯,我不知道。使用
strtime
strftime
添加了一行解决方案,速度可能较慢,但有效。好吧,我的评论可能有误导性,我不是有意提出一行,因为它是一行;-)<在我看来,code>fromisoformat更具可读性。我理解您并非有意提出一行解决方案。只是我随机不喜欢发布这个解决方案,我不知道为什么。所以,我想这可能是一条线的人。我同意ISOFORMAT的
显然更具可读性是一个更好的选择。谢谢。好吧,最好不要想太多关于获得否决票的事。另一方面,我不允许自己不发表评论就投反对票。在这种情况下,我只是留下了评论^^