Найдите дату в понедельник с Python

Поместите цикл в свой второй поток, который спит большую часть времени, но каждый [Интервал] он просыпается и проверяет совместно используемую переменную, которая говорит его, выполнить ли Ваш метод или нет, и если та общая булевская переменная имеет значение true, то он выполняет метод, который выполняет любую задачу, которую Вы пытаетесь выполнить... В том методе имейте метод, собирают данные, требуемые от другой совместно используемой переменной.

В основном потоке GUI, помещенном данные в совместно используемую переменную параметра метода, затем устанавливает булеву совместно используемую переменную "Выполнения" на истинный...

Внутренняя часть метод рабочего, не забудьте сбрасывать общий bool "выполненная" переменная ко лжи, когда Вы будете сделаны, таким образом, выигранный цикл; t выполняют тот же экземпляр много раз...

57
задан acrosman 25 October 2009 в 21:28
поделиться

5 ответов

>>> import datetime
>>> today = datetime.date.today()
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

Несколько пояснений:

Возьмем сегодняшнюю дату. Вычтите количество дней, которые уже прошли на этой неделе (получится «последний» понедельник). Добавьте одну неделю.

Изменить : Выше для «следующего понедельника», но, поскольку вы искали «последний понедельник», вы можете использовать

today - datetime.timedelta(days=today.weekday())
145
ответ дан 24 November 2019 в 19:11
поделиться

Примечание: OP говорит в комментариях: "

8
ответ дан 24 November 2019 в 19:11
поделиться

Сообщение ChristopheD близко к тому, что вы хотите. У меня недостаточно представителей, чтобы сделать комментарий: (

Вместо (что фактически дает вам следующий предстоящий понедельник):

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

Я бы сказал:

>>> last_monday = today - datetime.timedelta(days=today.weekday())

Если вы хотите предыдущую неделю, добавьте 'недели = 1 'параметр.

Это делает код более читаемым, поскольку вы вычитаете временную дельту. Это устраняет любую путаницу, вызванную добавлением timedelta с отрицательным и положительным смещениями.

39
ответ дан 24 November 2019 в 19:11
поделиться

Использование модуля timedeltas и datetime:

import datetime
datetime.date.today()+datetime.timedelta(days=-datetime.date.today().weekday())
1
ответ дан 24 November 2019 в 19:11
поделиться
d = datetime.datetime.today().weekday()

дает вам сегодняшний день недели, считая от 0 (понедельник) до 6 (воскресенье)

datetime.datetime.today() + datetime.timedelta(days=(7-d)%7)

(7-d)% 7 дает вам дни до понедельника или оставляет вас там, где вы находитесь, если сегодня понедельник

0
ответ дан 24 November 2019 в 19:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: