17 AĞUSTOS 2017
PERŞEMBE
01.47
PHP ile Son 7 Gün ve Haftanın Başlangıcı Uygulamaları

PHP ile tarih hesabı yapmak çok önemli olabiliyor. Çoğu projede haftalık kayıtların listelenmesi gerekiyor. Bunu yaparken tarihin iyi alınması da oldukça önemli. Özellikle dikkat edilmesi gereken bir takım kurallar varken atlanılması halinde yanlış sonuçlar gösterilebilir.

 

PHP ile son 1 haftayı öğrenmek istediğimizi varsayalım.

Son 7 Gün

Bugün 17.08.2017 olsun.

  • Bir hafta öncesine bakmamız gerekiyor. Öyleyse 17-7 = 10. Yani tam bir hafta öncesi 10.08.2017

Peki bugün 03.08.2017 olsaydı?

Yine bir hafta öncesine bakmak istersek 3-7 = -4 olarak gelecektir. Yani tarihimiz -4 mü?

Burada kuralımız basit. Bir if yapısı ekleriz ve eğer 0'a eşit veya küçükse dersek sorunu çözeriz. Öyleysek şöyle desek,

  • Eğer 3-7 <= 0 ise, sonra? Şimdi önceki ayımız 31, 30 veya 28 günden oluşuyor olabilir. Kafamıza göre birinden çıkartamayız. O halde önceki ayın kaç gün olduğunu bulmalıyız.
  • 7. ay 31 günden oluşuyor. O halde 31+(3-7) yaparsak aslında 31-4 yapmış ve haftanın ilk gününü 27 olarak bulmuş oluruz. Peki ay? O halde biz eğer dediğimiz alana bir de ay ibaresini ekleyelim. Böylece eğer 3-7 <= 0 ise buay = buay-1 yapalım.

Buraya kadar problemsiz geldik. Peki biz 1. aydaysak? Yani 1-1 yapıp 0. aya mı gideceğiz?

  • Bunun içinde bir if ekleyerek eğer birinci ayda isek oncekiay 12'dir diye bildirelim.

İşte genel mantığımız bu şekilde. Biraz karışık gelebilir fakat koda baktığınızda anlayacaksınız.

$bugun = date("j");
$buay = date("n");
$buyil = date("Y");

if ($bugun-7 <= 0) {
	if($buay == 1) {
		$haftaBaslangic_ay = 12;
		$haftaBaslangic_yil = $buyil-1;
	} else {
		$haftaBaslangic_ay = $buay-1;
		$haftaBaslangic_yil = $buyil;
	}
	$ba_ay_kacGun = cal_days_in_month(CAL_GREGORIAN, $haftaBaslangic_ay, $haftaBaslangic_yil);
	$haftaBaslangic_gun = $ba_ay_kacGun+($bugun-7);
} else {
	$haftaBaslangic_gun = $bugun-7;
	$haftaBaslangic_ay = $buay;
	$haftaBaslangic_yil = $buyil;
}

echo $haftaBaslangic_gun."-".$haftaBaslangic_ay."-".$haftaBaslangic_yil."<br/>";
echo $bugun."-".$buay."-".$buyil;

Çıktısı (17 Ağustos 2017'e Göre)

10-8-2017
17-8-2017

Son Hafta

Yukarıdaki algoritma mantığımızla aynı çalışmaktadır. Tek farkı 7 çıkartmak yerine haftanın kaç günden oluştuğunu bulmak, 1 çıkartmak ve kalanı 7 yerine yazdırmaktır.

$bugun = date("j");
$buay = date("n");
$buyil = date("Y");
$bugun_haftanin = date("N");
$kalan = $bugun_haftanin - 1;

if ($bugun-$kalan <= 0) {
	if($buay == 1) {
		$haftaBaslangic_ay = 12;
		$haftaBaslangic_yil = $buyil-1;
	} else {
		$haftaBaslangic_ay = $buay-1;
		$haftaBaslangic_yil = $buyil;
	}
	$ba_ay_kacGun = cal_days_in_month(CAL_GREGORIAN, $haftaBaslangic_ay, $haftaBaslangic_yil);
	$haftaBaslangic_gun = $ba_ay_kacGun+($bugun-$kalan);
} else {
	$haftaBaslangic_gun = $bugun-$kalan;
	$haftaBaslangic_ay = $buay;
	$haftaBaslangic_yil = $buyil;
}

echo $haftaBaslangic_gun."-".$haftaBaslangic_ay."-".$haftaBaslangic_yil."<br/>";
echo $bugun."-".$buay."-".$buyil;

Çıktısı (17 Ağustos 2017'e Göre)

14-8-2017
17-8-2017

cal_days_in_month() Fonksiyonu

Bu fonksiyonumuzu her iki bölümde de kullandık. Fonksiyonumuzun amacı belirtilen bilgiler doğrultusunda o ayın kaç günden oluştuğunu bulmaktır.

cal_days_in_month(CAL_GREGORIAN, AY, YIL);

Ay ve yıl bilgilerini girdikten sonra ekrana çıktı verdirirseniz o ayın kaç günden oluştuğunu bulabilirsiniz.

Fonksiyonumuzda kullanma sebebimiz ise önceki ayın kaç günden oluştuğunu hızlı bir şekilde bulabilmektir.

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et