v2.5.2
Giriş yap

Üretim Plan

okan
956 defa görüntülendi ve 2 kişi tarafından değerlendirildi

Merhaba arkadaşlar,
Üretimi takip etmek amaçlı birşey yapmak istiyorum ama nasıl yapacağımı bilemiyorum yardımcı olurmusunuz?

7.15 de mesai başlıyor. 17.00 de bitiyor. 9.00 - 09.15 , 12.00 - 12.45 , 15.15 - 15.30 gibi üç molamız bulunuyor.
yapmak istediğim olay şu. zaman = 100 saniye. iş adedi: 130 adet 100x130 = 13000 saniye ediyor. 3saat 36 dakika sonra işi bitirecek yapan kişi.
ama bu süre uzayada bilir yada molaya denk gelebilir molayıda baslagıc saatine göre eklesin süreye istiyorum. işi 3 saatte değilde 12 saattede bitirebilir yani bir gün sonraya sarkacak. 17:00 a kadar olan çıkacak adedi bana bulsun bir sonraki güne aktarsın saat kaçta biteceğini yazdırayım istiyorum..
Umarım açıklayıcı olmuştur yardımlarınızı bekliyorum.

makifgokce
1119 gün önce

doğru çalışıyor gibi umarım işini görür.
Hafta içi her gün mesai saatlerine göre hesaplıyor.

function calculate($from, $to)
{
	$workingDays = [1, 2, 3, 4, 5];
	$from = new DateTime($from);
	$interval = new DateInterval("PT1S");
	$r = ($to * 10) + 172800;
	$periods = new DatePeriod($from, $interval, $r);
	$sec = 0;
	foreach ($periods as $period) {
		if (!in_array($period->format('N'), $workingDays)) continue;
		$h = intval($period->format('H'));
		$m = intval($period->format('i'));
		if($sec >= $to){
			return $period->format('Y-m-d H:i:s');
			break;
		}
		// 		07:15				09:00					09:15					12:00				12:45						15:15					15:30					17:00
		if(($h >= 7 && $m >= 15) && ($h <= 8 && $m <= 59) || ($h >= 9 && $m >= 15) && ($h <= 11 && $m <= 59) || ($h >= 12 && $m >= 45) && ($h <= 15 && $m <= 14) || ($h >= 15 && $m >= 30) && ($h <= 16 && $m <= 59)){
			$sec++;
		}
	}
}
echo calculate("2021-12-01 07:15:00", 13000); // 2021-12-01 11:51:40