geçen hafta (Salı veya başka bir gün) php tarihini nasıl?

5 Cevap php

Ben olası düşünüyorum ama bunun için doğru algoritma ile gelip olamaz.

Ben ne yapmak istediği oldu:

Bugün Pazartesi 2 Şubat 2009 ise, nasıl ben geçen haftaki Salı tarihini bilmek istiyorsunuz? 2 gün sonra aynı kodu kullanarak, ben geçerli tarih Çarşamba, 4 Şubat, 2009 olmak Geçen haftaki Salı aynı tarihini bulur.

5 Cevap

Ben kabul edilen bir cevabı zaten orada olduğunu biliyorum, ama imho bunun için istendi ikinci ihtiyacını karşılamak değildir. Bir Çarşamba kullanılan eğer Yukarıdaki durumda, strtotime dün doğuracak. Yani, sadece kesin hala bu kontrol etmek gerekir edilecek:

$tuesday = strtotime('last Tuesday');
// check if we need to go back in time one more week
$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400 : $tuesday;


Davil yaptığı açıklamada da belirttiği gibi, bu benim tür bir hızlı vuruldu. Yukarıdaki hesaplama nedeniyle gün ışığından yararlanma süresi yılda bir kez biri tarafından kapalı olacak. Yeterince iyi bir çözüm olacaktır:

$tuesday = date('W', $tuesday)==date('W') ? $tuesday-7*86400+7200 : $tuesday;

Eğer 0:00 h olması zaman gerekiyorsa, elbette bazı ekstra çaba gerekir.

PHP aslında bu gerçekten kolaylaştırır:

echo strtotime('last Tuesday');

strtotime belgelerine bakın.

you forgot strtotime for second argument of date('W', $tuesday) hmm.

"$ Salı-7 * 86400 7200" önce timestamp için $ Salı dönüştürmek

mde.

Çalışma çözüm:

$z = date("Y-m-d", strtotime("last Saturday"));
$z = (date('W', strtotime($z)) == date('W')) ? (strtotime($z)-7*86400+7200) : strtotime($z);
print date("Y-m-d", $z);

Bu cevapların çoğu "Geçen Salı günü" ille geçen hafta Salı anlamına gelmez, çünkü ya çok fazla ya da teknik olarak yanlış, sadece "şimdi" aynı hafta içinde olabilir önceki Salı, demektir.

Doğru cevap:

strtotime('tuesday last week')