У меня есть скрипт, содержащий эту строку:
$showdate = mktime(18, 59, 0, 08, 02, 2015);
Это должно установить переменную 1438556340 (с датой 2 августа 2015 в 6:59 вечера)
НО, по какой-то безумной причине, с сегодняшнего утра устанавливается переменная 1417564740 (2 декабря 2014 г.).
Ничего не изменилось, насколько сценарий идет в течение нескольких недель. Так почему внезапное изменение? И есть ли способ это исправить?
Спасибо!
Как Сами Кухмонен указывает в первом комментарии на вопрос, вы не должны использовать 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
08 разбирается как восьмеричное число
Чтобы использовать восьмеричное обозначение, перед числом ставьте 0 (ноль).
08 не существует в восьмеричном виде, поэтому возвращает 0
восьмеричное: 0 [0-7] +
Mktime имеет следующее в документации
month Номер месяца относительно конца предыдущего
год. Значения от 1 до 12 соответствуют нормальным календарным месяцам года
обсуждаемый. Значения меньше 1 (включая отрицательные значения)
месяцы в предыдущем году в обратном порядке, поэтому 0 — декабрь, -1
Ноябрь и т. д. Значения больше 12 ссылаются на соответствующие
месяц в следующем году.
так что становится декабрь прошлого года