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

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

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

Но вывод был

21-02-10
Thu

Это дает корректную дату, но не корректное дневное значение. Почему..?

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

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 является заключительным массивом, соответствующим к сегодня, который должен быть возвращен. Есть ли любой другой лучший метод, чтобы сделать эту операцию.

12
задан Luca Antonelli 28 March 2019 в 21:50
поделиться

5 ответов

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

$t=date('d-m-Y');
echo date("D",strtotime($t));
3
ответ дан 2 December 2019 в 03:54
поделиться

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

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

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

$x = '21-02-2010';
echo date('D', strtotime($x));
1
ответ дан 2 December 2019 в 03:54
поделиться

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

//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 дат

5
ответ дан 2 December 2019 в 03:54
поделиться

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

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

$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));
3
ответ дан 2 December 2019 в 03:54
поделиться

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

echo date ("D", $ x). "
";

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

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

2
ответ дан 2 December 2019 в 03:54
поделиться