Разница между двумя датами (datetime) - PullRequest
3 голосов
/ 03 мая 2020

Я пытаюсь написать программу на Python, которая вычисляет количество дней между двумя датами.

Я получаю информацию от пользователя в формате 2 мая 2020 года. Я узнал, что Я должен сначала разобрать строку на дату, но я не знаю, как это сделать. Пожалуйста, помогите мне.

Вот программа, которую я пробовал:

from datetime import date

first_date(input)
sec_date(input)
con_date = datetime.strptime(first_date, '%d %m %Y').date()
con_date2 = datetime.strptime(first_date, '%d %m %Y').date()
delta = con_date2 - con_date
print(delta)

Если я дам ввод в виде строки May 2 2020 для first_date и Jun 30 2020 для sec_date, как я могу преобразовать эту строку в формат даты? Примечание: ввод должен быть представлен только в вышеуказанном формате.

Приведенный выше код не работает для меня, чтобы преобразовать строку в дату. Пожалуйста, помогите мне преобразовать его в дату и определить количество дней между sec_date и first_date.

Ответы [ 4 ]

3 голосов
/ 03 мая 2020

Вы можете просто проанализировать время, используя соответствующий формат strptime .

Затем, получив два date объекта, вы можете просто вычесть их:

import datetime 

d1_str = "Apr 29 2020"
d2_str = "May 7 2020"

fmt = "%b %d %Y"

d1 = datetime.datetime.strptime(d1_str, fmt).date()
d2 = datetime.datetime.strptime(d2_str, fmt).date()

delta = d2 - d1
print(delta)
print(delta.days)

Вывод:

6 days, 0:00:00
6
2 голосов
/ 03 мая 2020
from datetime import datetime

first_date = "May 2 2020"
sec_date = "Jun 30 2020"
con_date = datetime.strptime(first_date, '%b %d %Y').date()
con_date2 = datetime.strptime(sec_date, '%b %d %Y').date()
delta = con_date2 - con_date
print(delta.days)
1 голос
/ 03 мая 2020

Вот метод, который нужно применить, который примет для параметров дату начала и окончания, возвращая разницу в днях между ними. Надеюсь, это поможет.

from datetime import date
import time

first_date = input("Enter First Date: ").split(" ")
sec_date = input("Enter Second Date: ").split(" ")

def getTimeDiff(fist_date, second_date):
    month1 = time.strptime(first_date[0], "%b").tm_mon
    month2 = time.strptime(second_date[0], "%b").tm_mon

    date1 = date(int(fist_date[2]), month1, int(first_date[1]))
    date2 = date(int(second_date[2]), month2, int(second_date[1]))
    delta = date2 - date1
    return delta.days

res = getTimeDiff(first_date, sec_date)
print(res)
1 голос
/ 03 мая 2020

Это должно помочь

import datetime

str = "May 2 2020"
str2 = "June 30 2020"
#convert str of month to int
str = str.split(" ")
str2 = str2.split(" ")
month_name = str[0]
month_name2 = str2[0]

try:
    datetime_object = datetime.datetime.strptime(month_name, "%B")
except ValueError:
    datetime_object = datetime.datetime.strptime(month_name, "%b")
month_number = datetime_object.month

try:
    datetime_object = datetime.datetime.strptime(month_name2, "%B")
except ValueError:
    datetime_object = datetime.datetime.strptime(month_name2, "%b")
month_number2 = datetime_object.month

#find number of days between dates

d0 = datetime.date(int(str[2]), month_number, int(str[1]))
d1 = datetime.date(int(str2[2]), month_number2, int(str2[1]))
delta = d1 - d0
print(delta.days)
...