【问题标题】:From "2020-06-28T06:00:18.166286Z" to "%Y-%m-%dT%H:%M:%SZ" give an error format - Why?从“2020-06-28T06:00:18.166286Z”到“%Y-%m-%dT%H:%M:%SZ”给出错误格式 - 为什么?
【发布时间】:2020-07-22 22:51:31
【问题描述】:

我正在尝试修复此错误:

print(dt.datetime.strftime("2020-06-04T07:11:38.559105Z","%Y-%m-%dT%H:%M:%SZ"))

TypeError:描述符“strftime”需要一个“datetime.date”对象,但收到一个“str”

我需要将日期时间格式“2020-06-04T07:11:38.559105Z”更改为“2020-06-04T07:11:38Z” p>

【问题讨论】:

    标签: python datetime


    【解决方案1】:

    我相信您正在尝试使用 datetime.strptime 函数。

    我记得区别:

    strptime has a p for parsing. 
    strftime has an f for formatting. 
    

    这里的另一个问题是您尝试解析的字符串包含微秒,但不包含微秒格式字符串%f

    试试这个:

    date_obj = dt.datetime.strptime("2020-06-04T07:11:38.559105Z","%Y-%m-%dT%H:%M:%S.%fZ")
    date_str = date_obj.strftime("%Y-%m-%dT%H:%M:%SZ")
    

    【讨论】:

    • 谢谢!我尝试使用 f 和 p,但这也不起作用:
    • :( print(dt.datetime.strftime("2020-06-04T07:11:38.559105Z","%Y-%m-%dT%H:%M:%S.% fZ")) 类型错误:描述符“strftime”需要一个“datetime.date”对象但收到一个“str”
    • 啊抱歉,这是我复制粘贴得到的,刚刚更新了。
    • 谢谢....使用此结果:2020-06-04 07:11:38.559105... 但我需要删除毫秒 (.559105) 并且只显示“2020-06-04 07:11:38"
    • 我暂时这样解决:s="2020-06-04T07:11:38.559105Z" print(s.split(".")[0]+'Z')
    【解决方案2】:

    strftime 将日期时间转换为字符串。要执行相反的操作,请使用 strptimehttps://docs.python.org/3/library/datetime.html#datetime.datetime.strptime

    【讨论】:

    • 谢谢!我尝试使用 f 和 p,但这也不起作用
    • TypeError: 描述符“strftime”需要一个“datetime.date”对象但收到一个“str”
    • 您使用的是strftime 而不是strptime。您是否阅读过日期时间文档?
    猜你喜欢
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    相关资源
    最近更新 更多