В чем техническая разница между показанными временными выписками - PullRequest
0 голосов
/ 03 апреля 2012
$time1 = strtotime(date("Y-m-d", time()));
$time2 = strtotime(date("Y-m-d", time()));
$time1 = $time1 + (7 * 24 * 60 * 60);
$time2 = strtotime(date("Y-m-d", $time2) . " +1 week");

Вторая и третья строки явно делают разные вещи в моем коде. Это когда я обрабатываю дату старше месяца. Это должно быть так? И почему он это делает?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2012

Разница в том, что

$time1 = $time1 + (7 * 24 * 60 * 60);

добавляет 7 раз; 24 часа, тогда как

$time2 = strtotime(date("Y-m-d", $time2) . " +1 week");

добавляет одну неделю.

Обычно, конечно, это одно и то же, но ваш профиль говорит, что вы живете в Новой Зеландии, а Википедия говорит, что Новая Зеландия переходит с летнего времени на обычное время в первое воскресенье апреля, которое было вчера (или два дня назад для вас). Так что, возможно, недавно вы столкнулись с тем, что одна неделя была на самом деле 7 раз; 24 + 1 часа (потому что час с 2:00 до 3:00 1 апреля произошел дважды) вместо 7 & раза; 24 часа.

Точно так же весной вы обнаружите, что одна неделя может быть 7 раз; 24 & минус; 1 час.

1 голос
/ 03 апреля 2012

Они должны делать то же самое, но в строке 3 выполняется простая алгебра для вычисления целочисленного значения. Строка 4 должна проанализировать дату и строку +1 week и сгенерировать одно и то же значение.

Использование strtotime будет немного медленнее из-за вызова функции + синтаксического анализа строкового значения и преобразования его в правильную метку времени Unix.

...