Как рассчитать общее количество дней, прочитав дату, указанную в текстовом файле до сегодняшнего дня? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть текстовый файл, который содержит несколько данных следующим образом.


2018-07-20

2018-08-13

2018-07- 30

2018-07-18

2018-07-24

2018-08-13

2018-07-20

2018-08-10

Мне нужно найти количество дней с упомянутых дат до сегодняшнего дня. Этот python или сценарий оболочки примет входной файл следующим образом: f = open ("/ root / интервью /date1.txt "," r "). read (). split (" \ n ") и рассчитать с системным временем. Ожидаемый результат может быть чем-то вроде 300 дней разницы. Я не хорошо с python или сценарием оболочки. Может кто-нибудь, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

может быть, вы можете попробовать:

import datetime
d1 = datetime.datetime(2018,10,31)
d2 = datetime.datetime(2019,2,2)
interval = d2 - d1
days = interval.days

Я пробовал с Python3 .7.3, этот код имеет хорошую производительность. и есть два места, которые вам нужно уделить внимание. Во-первых, не используйте дополнительные «0» перед месяцем или днем, использование datetime (2019,02,02) неправильно. во-вторых, используйте имя 'интервал', но не другие имена

0 голосов
/ 21 апреля 2020

Вот код:

import datetime


dates = []

# Reading dates from dates.txt and
# removing all spaces in the head and tail of the string
with open('dates.txt', 'r') as f:
    dates = [i.strip() for i in f.readlines()]

# now dates list contains a bunch of strings like "2018-07-24"

today = datetime.datetime.now().date()

for date_str in dates:
    year, month, day = list(map(int, date_str.split('-')))
    # year, month and day are now integers
    # year = 2018
    # month = 7
    # day = 24

    date = datetime.date(year, month, day)
    days_passed = (today - date).days
    print(f'{days_passed} days passed since {date_str}')

И вывод:

641 days passed since 2018-07-20
617 days passed since 2018-08-13
631 days passed since 2018-07-30
643 days passed since 2018-07-18
637 days passed since 2018-07-24
617 days passed since 2018-08-13
641 days passed since 2018-07-20
620 days passed since 2018-08-10

Используется модуль datetime, который имеет все функции для работы с датой и временем.

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