-4

これが私のコードです:

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

これは私が受け取るエラーです:

  File "/home/nathan/Documents/project001/programFiles/Project 001.py", line 170, in updateUserDBDates
    userDB[1] = datetime.strptime(userDB[0], "%d-%m-%Y")
  File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
    (data_string, format))
ValueError: time data '2013-09-28 00:00:00' does not match format '%d-%m-%Y'

コードは時間データを作成しない'28-09-2013'(したがって機能する) べきではないか?

4

1 に答える 1

2

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"すると、より有益なエラーが表示されることに注意してください。

ValueError: unconverted data remains:  00:00:00

本当に開始のみを一致させたい場合は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)
于 2013-09-28T18:11:37.990 に答える