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的显然更具可读性是一个更好的选择。谢谢。好吧,最好不要想太多关于获得否决票的事。另一方面,我不允许自己不发表评论就投反对票。在这种情况下,我只是留下了评论^^