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.