Еженедельный таймер обратного отсчета в Python - PullRequest
0 голосов
/ 03 сентября 2018

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

Я знаю, как это сделать, если у меня была конкретная дата и время.

import datetime
delta = datetime.datetime(2018, 5, 5, 8) - datetime.datetime.now()

Но что, если у меня нет конкретной даты и времени? Может ли datetime позволить мне выбрать день недели?

EDIT:

т.е. Какой-то псевдокод, подобный этому, - вот что мне нужно.

delta = datetime(Thursday 8 PM) - datetime.datetime.now()
#returns datetime or timedelta in days, hours, minutes

1 Ответ

0 голосов
/ 03 сентября 2018

EDIT: Спасибо, Итан, я ценю твой конструктивный совет. Я написал небольшой скрипт, который должен делать то, что вы хотите:

import datetime
import time
wanted_day = 'thursday'
wanted_time = 8

list = [['monday', 0],['tuesday', 1],['wednesday', 2],['thursday', 3],['friday', 4],['saturday', 5],['sunday', 6]]

for i in list:
    if wanted_day == i[0]:
        number_wanted_day = i[1]

# today delivers the actual day
today = datetime.datetime.today().weekday()

# delta_days describes how many days are left until the wanted day
delta_days = number_wanted_day - today

# time delivers the actual time
time = time.localtime(time.time())

if wanted_time > time[3]:
    delta_hours = wanted_time - time[3]
    delta_mins = 59 - time[4]
    delta_secs = 59 - time[5]

else:
    delta_days = delta_days - 1
    delta_hours = 23 - time[3] + wanted_time
    delta_mins = 59 - time[4]
    delta_secs = 59 - time[5]

print [delta_days, delta_hours, delta_mins, delta_secs]

Выходные данные выглядят так:

[2, 21, 3, 49]

2 - количество дней, 21 - количество часов, 3 - количество минут и 49 - количество секунд (я использовал четверг 8 утра как желаемое время). Вам просто нужно ввести время в формате 0-23, с am и pm вам нужно будет немного его адаптировать

...