@walder

Как рассчитать время от даты окончания изготовления товара?

Всем привет.

Столкнулся с такой задачей, рассчитать время, но только обратно, от даты когда товар должен быть готов. К примеру есть товар который состоит из двух или трех деталей, чтобы изготовить каждую из них, нужно сделать несколько шагов. Если показывать в таблице, то выглядит это вот так:

Товар
-Деталь 1
--шаг 1 - 5 часов
--шаг 2 - 2 часа
--шаг 3 - 1 час
-Деталь 2
--шаг 1 - 5 часа
--шаг 2 - 4 часов
--шаг 3 - 3 часа

мне известно сколько я затрачу времени на определенный шаг, если бы я рассчитывал последовательно, то все предельно ясно и понятно, есть дата и время начала, есть продолжительность шагов...
Каждый шаг, это отдельная машина, на которой выполняется шаг, и шаги выполняются друг за другом... но также детали не зависимы друг от друга, они тоже могут выполняться одновременно. То есть если деталь 1 - ш1 выполнен, я могу начинать д2 - ш1 и соотвественно д1 - ш2 и д2 - ш2 но не забывать что пока д2 - ш1 не выполнена, то и начать д2 - ш2 тоже не могу и так далее...

если я начну в 12:00
-Деталь 1
--шаг 1 - 5 часов, закончу 17:00
--шаг 2 - 2 часа, закончу 19:00
--шаг 3 - 1 час, закончу 20:00
-Деталь 2
---шаг 1 - 5 часов, закону 22:00 (так как д1 - ш1 будет готов в 17:00 и нет шагов идущих перед ним)
--шаг 2 - 4 часа, закончу 23:00 (могу начать только в 22:00, так как в это время будет завершен шаг 1 у это детали, но если шаг 1 займет меньше времени чем шаг 1 у детали 1, то соотвественно могу его начинать...)
...

не знаю понятно ли объяснил...

вся сложность в том, что я должен рассчитать от даты когда товар должен быть собран полностью.
если мне надо закончить в 00:00 часов, я должен рассчитать когда мне минимум надо начать изготовление товара чтобы закончить до этого времени, и расчет должен вестись обратно...

если мне надо закончить в 00:00
-Деталь 1
--шаг 1 - 5 часов. когда должен начать ???? (нужно учесть когда будут закончены все детали и шаги, соответственно этот шаг должен быть начат раньше всех)
--шаг 2 - 2 часа,
--шаг 3 - 1 час,
-Деталь 2
--шаг 1 - 5 часов
--шаг 2 - 4 часа
--шаг 3 - 1 часа

заранее прошу прощение за корявое изложение, надеюсь хоть что-то понятно))) может есть люди кто сталкивался с такой задачей?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 1
OxCom
@OxCom
Если вы можете просчитать время вперед, то что мешает сделать просчет назад? Хотя бы сделать так:
- просчитать все вперед и получить дату окончания $dEndNow, если мы стартуем сейчас $dStartNow
- находим дельту $delta времени между $dEndNow и временем, когда необходимо закончить работу $dEndReq
- к текущему времени $dStartNow добавляем дельту $delta и получаем время старта. Да, дельта может быть отрицательной, но это случай когда мы уже упустили момент старта, чтобы закончить вовремя.

Используя эту дельту можно так же указать время старта каждой задачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы