【问题标题】:How to ensure dates are consistent in Python如何确保 Python 中的日期一致
【发布时间】:2020-04-30 11:07:14
【问题描述】:

我正在迭代一些以 2 种不同方式格式化的日期字符串,我想确保它们的格式相同,并且是一个日期时间对象。 我的字符串是这样的:

#
'2020-10-25'
'25/10/2020'
#

所以它们是 YYYY-MM-DD 和 DD/MM/YYYY 我希望所有日期的格式都像 DD/MM/YYYY

我当前的代码如下所示:

for completedDate in dates:
    try:
        completeDate = datetime.datetime.strptime(completeDate, "%Y-%m-%d").strftime("%d/%m/%Y")
    except:
        completeDate = datetime.datetime.strptime(completeDate, "%d/%m/%Y").date()
    print(completeDate)

哪些输出:

25/10/2020
2020-10-25

我想要:

25/10/2020
25/10/2020

它似乎适用于带有破折号 (YYYY-MM-DD) 的日期,但对斜线则相反...我认为这可能有点小,但我一直盯着这个太久了,求助!

【问题讨论】:

    标签: python


    【解决方案1】:

    你应该在这两种情况下以相同的方式格式化你的字符串

    for completedDate in dates:
        try:
            completeDate = datetime.datetime.strptime(completeDate, "%Y-%m-%d").strftime("%d/%m/%Y")
        except:
            completeDate = datetime.datetime.strptime(completeDate, "%d/%m/%Y").strftime("%d/%m/%Y")
        print(completeDate)
    

    如果数据格式是其他格式,例如“25.10.2020”,则使用此代码会出现异常。这可能是你想要的。

    【讨论】:

    • 完美,谢谢!但是,当我执行 print(type(completedDate)) 它返回 <class 'str'> 我试图在最后添加 .date() 但它抛出 AttributeError: 'str' object has no attribute 'date' 任何想法如何转换为日期?
    • completeDate = datetime.datetime.strptime(completeDate, "%Y-%m-%d") 返回 DateTime 对象。它有 strftime 方法将其转换为字符串。所以不要调用那个 strftime 方法,你会有 DateTime 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2020-11-05
    • 2014-09-13
    相关资源
    最近更新 更多