2010-02-21 4 views
10

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

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

Но выход был

21-02-10 
Thu 

Это дает правильную дату, но не правильный день value.Why ..?

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

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; 

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

ответ

2

Что я сделал для разрешения он используется формат даты («D-м-Y») вместо («D-м-у») в функцией даты, которая вызывает проблему.Следовательно strtotime принял формат и дал правильный результат для

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

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

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

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

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

Еще выход Thu для $ x = '21 -02-2010 '; –

+0

да на этот раз набрал правильный ... :) Спасибо –

2

, что я пытался здесь ...

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

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

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

+0

echo date ("D", strtotime ($ x, 1)). "
"; Это также не дает правильного ответа. –

+0

да на этот раз набрал нужный ... :) Спасибо –

4

Как об этом:

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

+0

if (1 == date ('N')) что такое 'N' в этой строке ... может у вас PLS объяснить мне код немного больше .. .? –

+0

N - числовое представление для дня недели. См. Http://uk2.php.net/manual/en/function.date.php –

+0

http://php.net/manual/en/function.date.php –

3

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

Это то, что вы хотите. $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)); 
+0

Кажется, что тяжелый труд найти в прошлый понедельник :) –

+1

Более того, он никогда не может существовать: http://www.last-thursday.org/ – codeholic

11

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

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

Спасибо .. Отличный ответ .. – VishalParkash

0

Я использую дату функции и путь к ней «D», что refere на текущий день, и он работает со мной

$today = date("D"); 

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

$today = date("D M j G:i:s T Y");    // Sat Mar 10 17:16:18 MST 2001 
Смежные вопросы