Помощь с построением логики

clocky

Client
Регистрация
26.09.2019
Сообщения
359
Благодарностей
48
Баллы
28
Всем привет, есть задача, есть 10 групп в которые писать можно только раз в 3 дня. Чтобы заполонить полностью эфир есть идея писать в группы раз в 3 часа. Потом записать в файл в какую группу и когда что отправлено. Как сделать так, чтобы потом он ждал 3-4 часа, но не писал ночью (после 22:00). Ну и как сравнивать дату, что если прошло меньше 3х дней, то он не будет работать? Надеюсь смог объяснить. Спасибо всем заранее!
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 101
Благодарностей
8 977
Баллы
113
Всем привет, есть задача, есть 10 групп в которые писать можно только раз в 3 дня. Чтобы заполонить полностью эфир есть идея писать в группы раз в 3 часа. Потом записать в файл в какую группу и когда что отправлено. Как сделать так, чтобы потом он ждал 3-4 часа, но не писал ночью (после 22:00). Ну и как сравнивать дату, что если прошло меньше 3х дней, то он не будет работать? Надеюсь смог объяснить. Спасибо всем заранее!
Здравствуйте.

Очень удобно работать с контрольными точками в виде UnixTime, которое представляет из себя количество секунд прошедших с определенной древней даты, если интересны подробности, то сможете самостоятельно загуглить этот момент.

Алгоритм простой - оставили сообщение в группе, сохранили текущее время Unix в переменную и далее по ходу выполнения проекта снимаете в другую переменную текущее время и вычитаете одну из другой, сравниваете с числом 10800 (3 часа в секундах).

Но такое длительное выполнение проекта, конечно крайне не желательно, лучше разбивать выполнение на более короткие. И выносить эти контрольки времени в файлы, чтобы потом в новых выполнениях брать их из этих файлов и сравнивать. Либо вместо файлов работать с глобальными переменными. Но проще - с файлами.
 
Последнее редактирование:

clocky

Client
Регистрация
26.09.2019
Сообщения
359
Благодарностей
48
Баллы
28
а как сделать, чтобы он не писал в ночное время? + мне нужно чтобы он не писал в 1 группу чаще чем раз в 3 дня. Можно думаю записывать 2 значения и unix time и просто текущее время и потом сравнивать, а вот есть скрипт на сревнение, если прошло меньше 3 дней?
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 101
Благодарностей
8 977
Баллы
113
а как сделать, чтобы он не писал в ночное время? + мне нужно чтобы он не писал в 1 группу чаще чем раз в 3 дня. Можно думаю записывать 2 значения и unix time и просто текущее время и потом сравнивать, а вот есть скрипт на сревнение, если прошло меньше 3 дней?
Тоже самое - контрольки Unixtime.
Они могут работать на любые отрезки времени, просто вычислить сколько секунд в 3-х днях и сравнивать с этим числом.
 

clocky

Client
Регистрация
26.09.2019
Сообщения
359
Благодарностей
48
Баллы
28
Короче, решил сделать так, получать просто час "return DateTime.Now.ToString("HH");" , дальше 2 if, больше 9 и меньше 22. Тогда работаем. Дальше уже проверка на прошли ли 3 часа и 3 суток.
 
  • Спасибо
Реакции: Sergodjan

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
большая часть логики решается настройками расписания
 
  • Спасибо
Реакции: WebBot

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)