Получение даты текущего дня в PHP

Я хочу получить дату на текущий день в php. то, что я попробовал, здесь...

echo $x."<br>";
echo date("D",$x)."<br>";

Но выход был

21-02-10
Thu

Это дает правильную дату, но не правильное значение дня. Почему..?

То, что я хочу, это дата понедельника для текущей недели, которая может быть сгенерирована в любой день недели. так что я сделал, я беру сегодняшний день и сравниваю с (Пн, Вт.... Солнце) и соответственно создаю отметку времени, используя

case "Mon":

$startdate1=date("d-m-y");
$parts = explode('-',$startdate1);
$startdate2 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+1),$parts[2]));
$startdate3 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+2),$parts[2]));
$startdate4 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+3),$parts[2]));
$startdate5 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+4),$parts[2])); 
$startdate6 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+5),$parts[2]));
$startdate7 = date('d-m-Y',mktime(0,0,0,$parts[1],($parts[0]+6),$parts[2]));

$dates=array(1 => $startdate1,$startdate2,$startdate3,$startdate4,$startdate5,$startdate6,$startdate7);
$i=1;
while( $i <= 7 )
{
echo $dates[$i];
$i++;
}
break;

$ date - это последний массив, соответствующий сегодняшнему дню, который должен быть возвращен. Есть ли другой лучший способ сделать эту операцию.

Ответ 1

Что я сделал для его решения, вместо даты (d-m-y ') в функции даты используется формат даты (' d-m-Y '), что вызывало проблему. Следовательно strtotime принял формат и дал правильный результат для

$t=date('d-m-Y');
echo date("D",strtotime($t));

Ответ 2

Я попробовал это, чтобы получить текущий день.

echo date('l'); // output: current day.

Ответ 3

Как насчет этого:

//today is monday
if (1 == date('N')){
    $monday = time();
}else{
    $monday = strtotime('last Monday');
}

for ($i = 0; $i < 7; $i++){
    echo date('d-m-Y', $monday) . '<br>';
    $monday = strtotime('tomorrow', $monday);
}

Сначала найдите понедельник, если это не сегодня, затем распечатайте 7 дат

Ответ 4

Что я хочу, день - это дата понедельника для текущей недели, которая может быть сгенерированный в любой день недели.

Что ты хочешь. $mday - это день месяца этой недели в понедельник. Nevermind, если это не положительно, mktime справится с этим правом. $monday имеет отметку времени полуночи в понедельник.

$now = getdate();
$mday = $now['mday'] - ($now['wday'] + 6) % 7;
$monday = mktime(0, 0, 0, $now['mon'], $mday, $now['year']);
echo(date('d-m-y', $monday));

Ответ 5

что я пробовал здесь...

echo date("D",$x)."<br>";

date ожидает значение временной метки (int) в качестве второго параметра. Ваш $x - это строка, содержащая двусмысленный формат даты. Сначала конвертируйте эту дату в метку времени, используя strptime или strtotime и правильно используйте функцию date, чтобы получить правильное значение дня.

Что касается вашей второй части, вам не нужно (и не должно) проверять имя дня, чтобы рассчитать правильный понедельник, вторник и т.д. Более эффективным подходом является, например, использование strtotime для получения last Monday и т.д..

Ответ 6

Вероятно, вы передаете строку как временную метку

echo $x."<br>";
echo date("D",$x)."<br>";

Удалите $x, и он выведет правильный день или изменит его на

$x = '21-02-2010';
echo date('D', strtotime($x));

Ответ 7

Я использую функцию date и путь к ней "D", которая ссылается на текущий день, и работает со мной

 $today = date("D"); 

и получить полную информацию о текущей дате

  $today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001