v2.5.2
Giriş yap

Laravel tarih ayarlaması(tarih bulma)

emreergen20
756 defa görüntülendi

Merhabalar,
Laravel projemde süre belirlenen bir alan yapmam gerek
yani abonelik(lisans vb) sistemine benzer. Kişi 41 gün diye seçtiğinde bu günden sonraki 41 gün sonrasını tarih olarak kayıt etmem gerek.
bu tarihleri nasıl bulurum
yani gün ay yıl hesabı nasıl oluyor.

mesela bu gün 5.11.2021 kullanıcı 60 gün dediğinde tarihin 4.01.2022 diye bulmam gerek bunu nasıl bulabiliyorum. hesaplama mantığı nedir.

ek olarak mesela istediğim günleri saymama olayıda olabilir.
yukarıdaki örnekden, mesela pazar günleri sayılmasın veya şu günlerde(cuma vb.) şunu yap gibi işlemleri nasıl yaparım.

kısaca en verimli nasıl bir yapı kurabilirim.

Teşekkürler.

makifgokce
911 gün önce

anladığım kadarıyla şöyle bişey yapmak istiyorsun.
Başlangıç tarihini ve iş gününü verip bitiş tarihini alıcaksın.

function number_of_working_days($from, $to) {
	$workingDays = [1, 2, 3, 4, 5]; # date format = N (1 = Monday, ...)
	$holidayDays = ['*-01-01', '*-04-23', '*-05-01', '*-05-19', '*-07-15', '*-08-30', '*-10-29']; # variable and fixed holidays
	// 1 Ocak, 23 Nisan, 1 Mayıs, 19 Mayıs, 15 Temmuz, 30 Ağustos, 29 Ekim

	$from = new DateTime($from);
	$interval = new DateInterval('P1D');
	$periods = new DatePeriod($from, $interval, $to * 2);

	$days = 0;
	$d = [];
	foreach ($periods as $period) {
		if (!in_array($period->format('N'), $workingDays)) continue;
		if (in_array($period->format('Y-m-d'), $holidayDays)) continue;
		if (in_array($period->format('*-m-d'), $holidayDays)) continue;
		if($days >= $to){
			break;
		}
		$d[] = $period->format('Y-m-d');
		$days++;
	}
	return $d;
}
echo "<pre>";
	print_r(number_of_working_days('2021-11-01', 30));
echo "</pre>";