Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

На входе 9 параметров:

1. Дата начала процесса dd/mm/yyyy,

2. Время начала процесса hh:mm:ss,

3. Длительность процесса в секундах (может быть больше 60),

4. Дата начала регулярного периода dd/mm/yyyy

Регулярный период - recurrence_event. Привязка к настоящему календарю.

5. Время начала регулярного периода hh:mm:ss

6. Дата окончания регулярного периода dd/mm/yyyy

7. Время окончания регулярного периода hh:mm:ss

8. Частота повторения MM:ww:dd:hh:mm:ss

9. Лимит длительности переcечения (TimeStore) hh:mm:ss

1. Рассчитать момент окончания процесса (дата и время)

2. Рассчитать разницу пересечения процесса с регулярным периодом. Если не пересекаются вернуть 0.

3. Исключить из пересечения процесса с периодом лимит длительности пересечения. Исключения производится от более раннего момента к более позднему.

3.1. Вернуть остаток лимита длительности пересечения (dd/mm/yyyy, hh:mm:ss), если нет вернуть 0.

3.2. Вернуть остаток пересечения (dd/mm/yyyy, hh:mm:ss), если нет вернуть 0.

3.3. Вернуть новый момент начала процесса (dd/mm/yyyy, hh:mm:ss), если нет вернуть 0.

3.4. Вернуть новый момент окончания процесса (dd/mm/yyyy, hh:mm:ss), если нет вернуть 0.

Использовать локальное московское время.

Предлагается использовать следующие модули

Time::Local

Date::Calc

Date::Manip

DateTime

12 лет назад
smolokurov
Дмитрий 
37 летРоссия
17 лет в сервисе
Был
год назад