geçtiğimiz gün wordpress ziyaretçi sayacı sorunsalı adlı yazıda belirttiğim gibi, bir sayaç hazırlamaya çalışıyorum.. sayacın özelliklerinden biri de, bir önceki haftanın ziyaretçilerini de sayacak olması.. genelde geçen hafta için bugünden itibaren 7 gün önceki kayıtlar baz alınır.. ancak ben böyle olmasını istemediğim için, bunun için bir fonksiyon yazdım.. fonksiyon, bir önceki haftanın hangi günler arasında geçtiğini söylüyor..
<?php
function gecen_hafta()
{
$hafta = date('W');
$yil = date('Y');
$gecen_hafta = $hafta - 1;
if ($gecen_hafta == 0)
{
$hafta = 52;
$yil--;
}
$gecen_hafta = sprintf("%02d", $gecen_hafta);
for ($i=1; $i<=7; $i++)
{
$arr_gunler[] = strtotime("$yil". "W$gecen_hafta"."$i");
}
return $arr_gunler;
}
// kullanımı
$gunler = gecen_hafta();
echo "geçen hafta " . date('Y-m-d',$gunler[0]) . " ile " . date('Y-m-d', $gunler[6]) . " tarihleri arasında geçiyor..";
// çıktı
// geçen hafta 2009-09-14 ile 2009-09-20 tarihleri arasında geçiyor..
?>
çeşitli amaçlarla da kullanılabilir bu.. ufak bir ekleme ile, yılın her hangi bir haftasının hangi günler arasına geldiğini de bulabiliriz aslında..
yaptığımız şey ise basit.. ilk önce kaçıncı haftadayız onu buluyoruz.. ardından da şu an içinde olduğumuz yılı alıyoruz..
$hafta = date('W');
$yil = date('Y');
ben bir önceki haftayı kullanacağım için, geçen haftanın kaçıncı haftaya denk geldiğini bulmak için, $hafta sayısından 1 çıkardım.. eğer yılın ilk haftasında isek, çıkartma işleminden sonra sonuç 0 olacağı için, $hafta değişkenine 52 değerini veriyoruz ve bir yıl geri gidiyoruz..
$gecen_hafta = $hafta - 1;
if ($gecen_hafta == 0)
{
$hafta = 52;
$yil--;
}
son işlemde de, haftanın günlerini hesaplayıp, $arr_gunler adlı değişkenimize atıyoruz..
$gecen_hafta = sprintf("%02d", $gecen_hafta);
for ($i=1; $i<=7; $i++)
{
$arr_gunler[] = strtotime("$yil". "W$gecen_hafta"."$i");
}
return $arr_gunler;
kullanırken ise, farklı yollar kullanabiliriz.. haftanın 7 gününü de ayrı birer değişkene atayabiliriz örneğin.. nerede nasıl kullanacağımıza bağlı olarak değişir tabii.. ben şu şekilde kullanacağım:
$gunler = gecen_hafta();
$haftaBasi = date('Y-m-d',$gunler[0]); // bugün için sonuç: 2009-09-14
$haftaSonu = date('Y-m-d', $gunler[6]); // bugün için sonuç: 2009-09-20
tarih çıktılarını da istediğiniz gibi değiştirebilirsiniz elbette.. buradan sonrası hayal gücünüze bağlı :)
dostum çok sağol.. acayip işime yaradı..
[Reply]
lestioni Reply:
1 Nisan 2010 at 23:43
İşine yaradığına sevindim ancak, saçma sapan isim ve eposta adresi yazmana da bir o kadar üzüldüm. Adres toplayıp yarın reklam yapmak gibi bir niyetimiz de yok. Neyse, saglık olsun.
[Reply]