Уведомления

Группа в Telegram: @pythonsu

#1 Май 5, 2020 21:42:58

oDoDo
Зарегистрирован: 2020-05-05
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

Сегодня 5.05.2020 (вторник) если к нему добавить 4 рабочих дня то получится 11.05.2020 (понедельник). Т.е. выходные (сб, вс.) не считаем.
Как это реализовать посредством питона?

Офлайн

#2 Май 5, 2020 23:53:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

Так как все недели одинаковые, то тебе нужно:
1) определить сначала, в каком дне недели ты находишься
2) определить, сколько к этому дню недели нужно прибавить дней с учётом выходных
3) прибавить количество дней, определённое в пункте 2, к текущему дню в календаре

Первое и третье можно сделать через модуль datetime. Второй пункт делается самодельной функцией, где на вход подаётся текущий день недели (число) и количество прибавляемых невыходных дней (число), а на выходе возвращается количество дней, которые нужно прибавить к текущему дню недели из первого аргумента функции, чтобы там были включены все невыходные дни, указанные во втором аргументе функции.

При разработке функции для второго пункта нужно учесть, что прибавляться может 0 дней, 4 дня, 184 дня, 12345 дней. Всё должно правильно работать для любых чисел.



Отредактировано py.user.next (Май 5, 2020 23:56:19)

Офлайн

#3 Май 6, 2020 00:06:09

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

я делал просто:
+ X дней через timedelta в цикле
если день выходной - то минусуем его.

Удобного решения в одну строку не нашел.

Офлайн

#4 Май 6, 2020 00:19:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10026
Репутация: +  857  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

VadimK
я делал просто:
+ X дней через timedelta в цикле
если день выходной - то минусуем его.
Про то и речь, что тебе нужно было одно делать, а ему нужно делать похожее, но другое, а потом кому-нибудь ещё понадобится делать похожее, но вообще третье. Поэтому нужно написать функцию, которая подходит ко всем ситуациям одинаково. Даже он сам захочет потом отнять рабочие дни, так для этого не придётся новый код писать, а можно просто будет взять уже написанную функцию и её использовать (если он отрицательные числа там тоже сделает). Если даже брать timedelta в питоне, то можно увидеть на примере её реализации, что timedelta можно как прибавлять к дате, так и отнимать от даты. Они не стали делать только прибавление дельты или только возможность сохранения этой дельты. Её можно и сохранить, и прибавить, и отнять. Поэтому этот модуль datetime ты можешь использовать во всех задачах, связанных со временем, а не только в какой-то одной, в каких-то двух, и так далее.



Офлайн

#5 Май 6, 2020 07:38:16

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

https://pythonworld.ru/moduli/modul-calendar.html
https://pythonworld.ru/moduli/modul-time.html



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Май 6, 2020 07:47:11)

Офлайн

#6 Май 6, 2020 08:26:40

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как добавить "N" рабочих дней к сегодняшней дате?

тут на форуме где то был мой пост о виджете календарь на kivy … но чет как то не нашлось …
но у меня на машине в каталоге выкинутьчерезнекотороевремяобязательно нашлось может поможет



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Прикреплённый файлы:
attachment KivyDataTimeInputWidget1.zip (2,2 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version