Получение даты текущего дня в PHP - PullRequest
11 голосов
/ 21 февраля 2010

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

Ответы [ 7 ]

21 голосов
/ 03 февраля 2014

Я пытался получить текущий день.

echo date('l'); // output: current day.
5 голосов
/ 21 февраля 2010

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

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

3 голосов
/ 21 февраля 2010

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

$t=date('d-m-Y');
echo date("D",strtotime($t));
3 голосов
/ 21 февраля 2010

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

Это то, что вы хотите. $mday - день месяца понедельника этой недели. Не берите в голову, если это не положительно, 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));
2 голосов
/ 21 февраля 2010

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

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

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

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

1 голос
/ 04 августа 2014

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

 $today = date("D"); 

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

  $today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
1 голос
/ 21 февраля 2010

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

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

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

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