Autor | Zpráva | ||
---|---|---|---|
Andrej.B Profil |
#1 · Zasláno: 15. 2. 2022, 14:10:30
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 |
#3 · Zasláno: 15. 2. 2022, 14:34:22
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 |
#4 · Zasláno: 16. 2. 2022, 12:27:35
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 |
#5 · Zasláno: 16. 2. 2022, 13:12:01
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 |
#6 · Zasláno: 16. 2. 2022, 13:29:17
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 |
||
Časová prodleva: 2 roky
|
0