我在使用strptime时收到一个错误,但是当我手动输入d时,它可以工作

2024-09-27 19:19:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

def updateUserDBDates():
    global userDB, currentDate, previousDate, changeInDate

    index = 0
    index2 = 0

    userDB[1] = datetime.strptime(userDB[0], "%d-%m-%Y")
    userDB[0] = datetime.strftime(datetime.today(), "%d-%m-%Y")
    userDB[0] = datetime.strptime(userDB[0], "%d-%m-%Y")

    saveData()

    currentDate = userDB[0]
    previousDate = userDB[1]
    changeInDate = currentDate - previousDate

我收到的错误是:

^{pr2}$

代码是否应该使时间数据'28-09-2013'(因此可以工作)?在


Tags: 代码todaydatetimeindexdefglobaluserdbstrftime
1条回答
网友
1楼 · 发布于 2024-09-27 19:19:58

strptime必须完全匹配;它不能执行部分匹配。你应该用

datetime.datetime.strptime('2013-09-28 00:00:00', "%Y-%m-%d %H:%M:%S")
#>>> datetime.datetime(2013, 9, 28, 0, 0)

请注意,如果使用"%Y-%m-%d",而不是不正确的"%d-%m-%Y",您将得到一个信息更丰富的错误:

^{pr2}$

如果您真的只想匹配start,可以使用re来预处理数据:

yyyymmdd = re.search('\d\d\d\d-\d\d-\d\d', '2013-09-28 00:00:00').group()
datetime.datetime.strptime(yyyymmdd, "%Y-%m-%d")
#>>> datetime.datetime(2013, 9, 28, 0, 0)

或者,如果您想要一天,但知道整个格式,您可以使用date方法:

datetime.datetime.strptime('2013-09-28 12:04:43', "%Y-%m-%d %H:%M:%S").date()
#>>> datetime.date(2013, 9, 28)

相关问题 更多 >

    热门问题