Autor Zpráva
Andrej.B
Profil
Zdravim,

je poziadavka pri vytvarani planu vyroby, pridavat automaticky cas potrebny na vyrobu produktu k predchadzajucemu riadku aby nam system zaplanoval podla datumu na ten ktory stroj, kapacitu.


<?php
$datum_zaciatok = '15.02.2021 7:00:00';
$mnozstvo_produktu = '980';

//Vyber z databazy kolko casu v hodinach je na jeden kus
$bom_hodiny = '0.011578142';

//vypocitat kolko hodin je na tie kusy potreba
$spolu = $bom_hodiny*$mnozstvo_produktu ;
$spolu = '11.34657916';
?>


Ako pripocita tuto hodnotu $spolu k $datum_zaciatok aby som to mal potom v rovnakom formate?

Dakujem.
blaaablaaa
Profil
Andrej.B:
Používej čísla, ne stringy. Stačí počáteční čas převést na datetime objekt a k němu přičíst požadovaný interval.


$datum = new DateTime('15.02.2021 7:00:00');
$mnozstvo_produktu = 980;
$bom_hodiny = 0.011578142;
$bom_sekundy = $bom_hodiny *60*60;

//vypocitat kolko hodin je na tie kusy potreba
$spolu = $bom_sekundy *$mnozstvo_produktu;

$datum->add(new DateInterval('PT'.round($spolu).'S'));
var_dump($datum);
Andrej.B
Profil
dakujem. Vypada to super.


Mne fungovali cele cisla ako:

$cislo = 11;
echo date('d.m.Y H:i:s', strtotime($datum_zaciatok. "+{$cislo} hours"));
Andrej.B
Profil
tak funguje na stroje ktore maju 24/7 vytazenie, ale mame stroj, ktory robi len na jednu 8h smenu. od 7:00 do 15:00

ak mam zaciatok:
$datum = '15.02.2021 7:00:00';

a Produkt 01 sa bude robit 7h 34m, tak dalsi v poradi pojde ako:

Produkt 2 - 15.02.2022 14:34:00 a bude sa robit 3h 27m takze dalsi by mi mal zobrazit ako
Produkt 3 - 16.02.2022 10:01:00 pretoze sa pracuje do 15.00 to je 26 minut 15.02.2022 a dalsi den zacina zase o 7:00 takze musi priratat 3h27m-26m
Konecny vysledok

Nazov Produktu - zaciatky/pocet hodin

Produkt 01 - 15.02.2021 07:00:00 / 7h34m
Produkt 02 - 15.02.2022 14:34:00 / 3h27m
Produkt 03 - 16.02.2022 10:01:00 / 6h03m
Produkt 04 - 17.02.2022 08:04:00 atd

Absolutne v tom mam chaos

mam nejake premenne:
$start_day_smena = '07:00';
$end_day_smena = '15:00';
$pocet_hodin_smena = '8';
$pocet_sekund_smena = $pocet_hodin_smena*60*60;
$prirataj_smeny = (24/$pocet_hodin_smena)*60*60;
$zaciatok_casu = '15.02.2022 07:00:00';    
$zaciatok_casu = strtotime($zaciatok_casu);

{
// prvy vyber v prechode while
echo $row_plan['product_number'];
echo ' - ';
echo date('d.m.Y', $zaciatok_casu);
echo ' - ';
echo date('H:i', $zaciatok_casu);
// pocet sekund na vyrobu produktu v mnozstve
$bom_sec = $row_plan['prod_cas_all']*60*60;
// prirataj cas v sekundach k pociatocnemu casu 
$zaciatok_casu += $bom_sec;
}

nejako takto mi to funguje na 24/7, len neviem co s tym 8 hodinovym dennym casom.
blaaablaaa
Profil
Andrej.B:
1. spočítej si čas, jak dlouho potrvá výroba
2. spočítej si, kolik máš času do konce směny, pokud stihneš vyrobit, tak použij skript výše; pokud ne, "obsaď" si celou aktuální směnu a pokračuj dál:
3. přes celočíselné dělení si zjisti, kolik celých směn to zabere další dny
4. přes modulo zjisti, kolik času to zabere z poslední směny

Nejlépe určit si nejmenší jednotku, ve které to chceš počítat (minuta, sekunda?) a v ní řešit všechny počty.
Andrej.B
Profil
nech premyslam akokolvek, tak si neviem urcit koniec smeny a ani zaciatok dalsej.
Budem si musiet asi najskor vygenerovat zaciatky a konce smien vsetkych dni, na ktore mam plan, napriklad dalsich 30 dni a ukladat si ich v timestampe a tam niekde zacat a pozerat ci mi nepretecie ten cas a potom pridam +16 hodin od konca smeny, kde zacina dalsia smena. uff.

Najhorsia vec na programovani su casove jednotky. Toto bude rehola.

Diky
blaaablaaa
Profil
Tak pokud je směna vždy 7-15, jak píšeš v [#4], tak potřebuješ řešit jen první a poslední den + počet směn mezi tím.

Ideálně si sepiš, jak bys postupoval, kdybys to počítal ručně.

Dejme tomu, že máš volný stroj zítra od 10:30 a potřebuješ vyhradit třeba 100 hodin, tak:
1. zítra ti zbývá volných 4.5 h, které tímto obsadíš.
2. v dalších dnech potřebuješ ještě 95.5 h, tedy 11 celých směn, které obsadíš
3. zbývá tedy 7.5 h (100h - 4.5h - 88h) práce na poslední den, tedy od 7:00 je to do 14:30

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0