cari ayın dördüncü Cumartesi tarihini çalışmak

5 Cevap php

Bit hakkında bu bir gitmek konusunda sıkışmış. Cari ay göz önüne alındığında, her ayın dördüncü Cumartesi tarihini dönmek gerekir.

örneğin Bu ay 20 Şubat olurdu, sonraki 27 Mart olurdu.

Teşekkürler

5 Cevap

Ben bir PHP coder değilim, ancak strtotime sonra ne konum görünüyor.

Sen strtotime ("dördüncü Cumartesi") kullanabilir ve 4. Cumartesi dönecektir.

strtotime docs göz atın.

EDIT:

Sadece cevabı tam Tom ve Paul Dixon sayesinde yapmak için

date('dS F',strtotime('Fourth Saturday '.date('F o'))); 

Sen strtotime başlangıç ​​tarihine göre "önümüzdeki Cumartesi" bulmak için kullanabilirsiniz. Bu başlangıç ​​tarihi olası en erken önceki gün (21) önceki gün ise biz cevap olsun ...

//required year/month
$yyyymm="2009-01";

//find next saturday after earliest possible date
$t=strtotime("next saturday", strtotime("{$yyyymm}-21"));

//here you go!
echo "4th saturday of $yyyymm is ".strftime("%Y-%m-%d",$t)."\n";

Herhangi bir ay içinde bir gün erken olası 4. Mükerrer (1,8,15,22), son olası 4. Mükerrer 28 olan 22 olan (7,14,21,28).

EDIT: bu belgelerde açık olmamasına rağmen, talep edebilirsiniz "dördüncü Cumartesi" de - esas olarak ayın sıfırıncı gün kullanabilirsiniz:

$t=strtotime("fourth saturday", strtotime("{$yyyymm}-00"));

veya temel zaman ihmal ve doğrudan ay ve yıl belirtin:

$t=strtotime("fourth saturday feb 2009");

Tip of the hat to Robin "I'm not a PHP coder" Day for spotting that :)

Dördüncü Cumartesi erken tarih ayın 22 olduğunu. Eğer bir maç (kontrol etmek gerekir maksimum 6 gün) bulana kadar, cumartesi değilse, bugüne kadar bir gün ekleyin ve tekrar kontrol, 22 bakmak o haftanın hangi günü görmek.

Ayın ilk Cumartesi bulun ve o üç hafta ekleyecektir.

Ilk Cumartesi (ya da, daha doğrusu, özel bir gün adı ile ilgili bir tarih bilmiyorum) ne zaman bilmiyorsanız, ben uygun baktım ki, Doomsday algorithm bakmak isteyebilirsiniz biraz benzer bir konu ile başka bir yazı için.

PHP ziyade sahte kod (düşünmek 5.2 gerektirir)

$date = getdate();
$date-> setDate($date->format('Y'), $date->format('Y'), '1');   // 1st of month.  
while ($date->format('w' != 6)
    $date->modify("+1 day");
$date->modify("+21 day"); // date is now on the fourth saturday