v2.5.2
Giriş yap

Laravel tarih ayarlaması(tarih bulma)

emreergen20
949 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
1113 gün önce
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);
	$to = new DateTime($to);
	$to->modify('+1 day');
	$interval = new DateInterval('P1D');
	$periods = new DatePeriod($from, $interval, $to);

	$days = 0;
	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;
		$days++;
	}
	return $days;
}
echo number_of_working_days('2021-01-01', '2022-01-01');
// Output: 255

$workingDays Cumartesi ve Pazar hariç tüm günleri hesapla
$holidayDays Resmi tatilleri hariç tut.
Orjinali için https://stackoverflow.com/a/19221403