Использование даты из пользовательского ввода с datetime для расчета количества дней между датами - PullRequest
0 голосов
/ 01 апреля 2019

Считать даты из пользовательского ввода в виде гггг, мм, дд.Затем найдите количество дней между датами.Datetime хочет целые числа, а входные данные должны быть преобразованы из строки в целое число.Предыдущие вопросы, похоже, касались времени или другой ОС, и эти предложения, похоже, не работают с Anaconda и Win10.Я пробовал те, которые, кажется, для ОС Win10.Пользовательские переменные ввода не работают так, как они введены, поскольку они являются строками и, по-видимому, должны быть преобразованы в целочисленный формат.

Я пробовал различные способы преобразования в целое число, и datetime отвечает ошибками, указывающими на то, что требуется целое число ивидит кортеж, список или строку.Если я ввожу значения даты напрямую, все работает нормально.Я пробовал - как разделитель в пользовательском вводе и до сих пор получаю ошибку.Я попытался обернуть ввод в (""), "", '' и () и все еще получаю ошибки.Я не мог быть более конкретным в тегах, но следующее может помочь с ответами.Я использую Python 2.6 на Windows 10 в Anaconda.По какой-то причине datetime.strptime не распознается, поэтому некоторые ответы не сработали.

   InitialDate = input("Enter the begin date as yyyy,mm,dd")
   FinalDate = input("Enter the end date as yyyy,mm,dd")
   ID = InitialDate.split(",")
   ID2 = int(Id[0]),int(Id[1]),int(Id[2])
   Iday = datetime.datetime(Id2)
   Fd = FinalDate.split(",")
   Fd2 = int(Fd[0]),int(Fd[1]),int(Fd[2])
   Fday = datetime.datetime(Fd2)
   age = (Fd2 - Id2).day

Я ожидаю целочисленное значение для возраста.
Я получаю ошибку типа, требуется целое число (получил тип кортеж) до выполнения возрастной линии.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2019

Используйте .strptime(), чтобы преобразовать строковую дату в объект даты, а затем вычислите diff

Ex:

import datetime

InitialDate = "2019,02,10"  #input("Enter the begin date as yyyy,mm,dd")
FinalDate  = "2019,02,20"   #input("Enter the end date as yyyy,mm,dd")

InitialDate = datetime.datetime.strptime(InitialDate, "%Y,%m,%d")
FinalDate = datetime.datetime.strptime(FinalDate, "%Y,%m,%d")
age = (FinalDate - InitialDate).days
print(age)

Выход:

10
0 голосов
/ 01 апреля 2019

У меня просто была похожая проблема, мое решение состояло в том, чтобы сделать еще одно int со значением массива.Как то так:

ID = InitialDate.split(",")
 Id0 = Id[0]
 Id1 = Id[1]
 Id2 = Id[2]
 ID2 = int(Id0),int(Id1),int(Id2)
 Iday = datetime.datetime(Id2)
 Fd = FinalDate.split(",")
 Fd0 = Fd[0]
 Fd1 = Fd[1]
 Fd2 = Fd[2]
 Fd2 = int(Fd0),int(Fd1),int(Fd2)
 Fday = datetime.datetime(Fd2)
 age = (Fd2 - Id2).day 
0 голосов
/ 01 апреля 2019

из даты и времени, импорта, даты и времени

InitialDate = input ("Введите начальную дату как гггг / мм / дд:") FinalDate = input ("Введите конечную дату как гггг / мм / дд:")

InitialDate = datetime.strptime (InitialDate, «% Y /% m /% d») FinalDate = datetime.strptime (FinalDate, «% Y /% m /% d»)

разница= FinalDate - Начальная дата печати (разность дней)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...