date — Php Обнаружено неправильное числовое значение

Из этого кода:

$kw = CalenderWeekHelper::getCalenderWeek($currentYear);
if(isset($_POST['generate'])) {
for($i = 0; $i < 52; $i++) {
foreach($users as $user) {

if ($i > 52) {
break;
}
$start = $kw[$i]['start'];
$end   = $kw[$i]['end'];

$startCon = date('Y-m-d', $start);
$endCon   = date('Y-m-d', $end);
}
}
}

Хелпер Класс:

class CalenderWeekHelper {

public static function getCalenderWeek($year)
{
for ($i=0; $i <= 52; $i++)
{
$week = sprintf('%02s', $i);
$from = date("Y-m-d", strtotime("{$year}W{$week}")); # d.m.Y
$to   = date("Y-m-d", strtotime("{$year}W{$week} +6 days"));
$weekArray[$i] = array('start' => $from, 'end' => $to);

}
return $weekArray;
}
}

Я получил:

Примечание. В строке … встречается некорректно сформированное числовое значение:

Что указывает на эти строки:

$startCon = date('Y-m-d', $start);
$endCon   = date('Y-m-d', $end);

РЕДАКТИРОВАТЬ:
var_dump ($ kw) выводит следующее:

array (size=53)

0 =>
array (size=2)
'start' => string '1970-01-01' (length=10)
'end' => string '1970-01-01' (length=10)
1 =>
array (size=2)
'start' => string '2014-12-29' (length=10)
'end' => string '2015-01-04' (length=10)
2 =>
array (size=2)
'start' => string '2015-01-05' (length=10)
'end' => string '2015-01-11' (length=10)
3 =>
array (size=2)
'start' => string '2015-01-12' (length=10)
'end' => string '2015-01-18' (length=10)
4 =>
array (size=2)
'start' => string '2015-01-19' (length=10)
'end' => string '2015-01-25' (length=10)
5 =>
array (size=2)
'start' => string '2015-01-26' (length=10)
'end' => string '2015-02-01' (length=10)
6 =>
array (size=2)
'start' => string '2015-02-02' (length=10)
'end' => string '2015-02-08' (length=10)
7 =>
array (size=2)
'start' => string '2015-02-09' (length=10)
'end' => string '2015-02-15' (length=10)
8 =>
array (size=2)
'start' => string '2015-02-16' (length=10)
'end' => string '2015-02-22' (length=10)
9 =>
array (size=2)
'start' => string '2015-02-23' (length=10)
'end' => string '2015-03-01' (length=10)
10 =>
array (size=2)
'start' => string '2015-03-02' (length=10)
'end' => string '2015-03-08' (length=10)
11 =>
array (size=2)
'start' => string '2015-03-09' (length=10)
'end' => string '2015-03-15' (length=10)
12 =>
array (size=2)
'start' => string '2015-03-16' (length=10)
'end' => string '2015-03-22' (length=10)

Кто-нибудь знает решение?

1

Решение

date() Функция принимает только метку времени Unix.

В вашем коде у вас есть два варианта:

1: использовать $start а также $end напрямую, так как они уже хорошо отформатированы:

$startCon = $start;
$endCon = $end;

2: Поворот $start а также $end в метку времени Unix с strtotime():

$startCon = date('Y-m-d', strtotime($start));
$endCon   = date('Y-m-d', strtotime($end));

Если вы хотите изменить формат, используйте второй. Если нет, используйте первый.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]