PHP 4 Geçerli haftanın Pazartesi tarihini alın [yinelenen]

8 Cevap php

Bu soru burada zaten bir cevabı var:

8 Cevap

Easisest yol:

$time = strtotime('monday this week');

Bu deneyin:

return strtotime('last monday', strtotime('next sunday'));
echo date('Y-m-d',time()+( 1 - date('w'))*24*3600);

Önümüzdeki hafta için:

echo date('Y-m-d',time()+( 8 - date('w'))*24*3600);

Böylece Pazartesi, 2 Salı, Çarşamba ve 3 1. Bir deneyin.

echo date('Y-m-d', strtotime('previous monday'));

Sadece bir not olsa. Sen diyor gibi, aksi takdirde previous Pazartesi tarihini alacaksınız, emin bugün Pazartesi değil emin olmak istiyorum. Aşağıdaki gibi yapabilirsin

if (date('w') == 1)
{
    // today is monday
}
else
{
    // find last monday
}

$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );

Edit: açıklama

  • date('w') haftanın günü bir sayısal gösterimi (0 = Pazar, 6 = Cumartesi)
  • 86400 saniye bir gün vardır
  • Biz şimdiki zaman ayırın ve çıkarma (bir gün * (haftanın günü - 1))

Şu anda Çarşamba (3. gün) olup olmadığını Yani, Pazartesi iki gün önce olduğunu:

time() - (86400 * (3 - 1)) = time() - 86400 * 2

Bu Pazartesi (1. gün) ise, biz olsun:

time() - (86400 * (1 - 1)) = time() - 86400 * 0 = time()

Bu Pazar (gün 0) ise, Pazartesi yarın.

time() - (86400 * (0 - 1)) = time() - -86400 = time() + 86400

Bu deneyin.

echo date('Y-m-d', strtotime('last monday', strtotime('next monday')));

Bugün Pazartesi ise geçerli tarih dönecektir, aksi takdirde son Pazartesi dönecektir. En azından tr yerele altında benim PHP 5.2.4 yapar.

Benim girişimi:

<?php
$weekday = date("w") - 1;
if ($weekday < 0)
{
    $weekday += 7;
}
echo "Monday this week : ", date("Y-m-d",time() - $weekday * 86400) , "\n";
?>

Bu deneyin

$day_of_week = date("N") - 1; 
$monday_time = strtotime("-$day_of_week days");