PHP mktime вдруг в прошлом?

У меня есть скрипт, содержащий эту строку:

$showdate = mktime(18, 59, 0, 08, 02, 2015);

Это должно установить переменную 1438556340 (с датой 2 августа 2015 в 6:59 вечера)

НО, по какой-то безумной причине, с сегодняшнего утра устанавливается переменная 1417564740 (2 декабря 2014 г.).

Ничего не изменилось, насколько сценарий идет в течение нескольких недель. Так почему внезапное изменение? И есть ли способ это исправить?

Спасибо!

0

Решение

Как Сами Кухмонен указывает в первом комментарии на вопрос, вы не должны использовать 08 (неверный восьмеричный литерал), когда вы имеете в виду 8 (десятичный).

<?php
echo mktime(18, 59, 0, 08, 02, 2015), "\r\n";
echo mktime(18, 59, 0, 8, 2, 2015), "\r\n";

echo 8, "\r\n";
echo 08, "\r\n";

печать

1417543140
1438534740
8
0
0

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

08 разбирается как восьмеричное число

Чтобы использовать восьмеричное обозначение, перед числом ставьте 0 (ноль).

08 не существует в восьмеричном виде, поэтому возвращает 0

восьмеричное: 0 [0-7] +

Mktime имеет следующее в документации

month Номер месяца относительно конца предыдущего
год. Значения от 1 до 12 соответствуют нормальным календарным месяцам года
обсуждаемый. Значения меньше 1 (включая отрицательные значения)
месяцы в предыдущем году в обратном порядке, поэтому 0 — декабрь, -1
Ноябрь и т. д. Значения больше 12 ссылаются на соответствующие
месяц в следующем году.

так что становится декабрь прошлого года

http://php.net/manual/en/language.types.integer.php

http://php.net/manual/en/function.mktime.php

0

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