#php #javascript #forms #date #calendar
#php #javascript #формы #Дата #Календарь
Вопрос:
Я использую скрипт календаря Джейсона Муна, чтобы позволить пользователям устанавливать дату события. Хотя для года и месяца это работает нормально, у меня возникают проблемы с установкой правильного дня. Он последовательно устанавливает дату события на один день, предшествующий выбранному пользователем; это происходит, даже если это означает возврат к предыдущему месяцу (1 августа становится 31 июля). Я не могу понять, почему это или что это делает!
Код на стороне клиента является:
<script>
dateInput(‘publicationDate’, true, «ГГГГ-ММ-ДД»,
<
?php echo $results[‘article’]-> Дата публикации? «‘».date( «Y-m-d», $results[‘article’]-> Дата публикации ).»‘» : «» ?>);
</script>
пока единственный фрагмент серверного кода, который, как я могу себе представить, вызывает эту ошибку, это:
// Parse and store publication date
if ( isset( $params['publicationDate'] ) ) {
$publicationDate = explode ( '-', $params['publicationDate'] );
if ( count( $publicationDate ) == 3 ) {
list ($y, $m, $d) = $publicationDate;
$this->publicationDate = mktime(0, 0, 0, $m, $d, $y);
}
}
У кого-нибудь есть идеи, что может быть причиной этого? Возможно, это связано с часовым поясом, который я установил в своем файле конфигурации (Америка / Торонто)?
Комментарии:
1. Код скрипта не похож на действительный javascript. Что вы получаете от клиента?
2. Извините, забыл экранировать теги php — спасибо.
Ответ №1:
Попробуйте установить время в mktime на полдень или что-то в этом роде вместо 00:00:00 — и вы должны явно указать часовой пояс в любом случае, в качестве хорошей практики. Если постоянно истекает один день, вы определенно можете сделать $ d 1 в инструкции mktime, как предложил @diEcho (но вы сказали, что истекла дата, а не месяц, и я действительно считаю, что дата равна 1 -индексируется не 0 — но если она постоянно неверна, вы можете сделать ее постоянно фиксированной).
Комментарии:
1. Спасибо, я установил mktime на полдень, и все сработало нормально! У вас есть какие-либо идеи, почему? По-разному ли интерпретируют границы между днями mktime () и date()?
2. Да, точно — я видел, как он ведет себя по-другому с 23: 59: 59 по сравнению с 00: 00: 00 — я просто подумал, что полдень будет абсолютно однозначным и его невозможно неправильно истолковать, независимо от того, что думает ваше окружение. 🙂
Ответ №2:
это может быть проблемой month
, если это так, то решение приведено ниже:
Значение, возвращаемое getMonth
, является целым числом от 0 до 11. 0 соответствует январю, 1 — февралю и так далее.
итак, чтобы получить текущий месяц, вам всегда нужно написать 1
вот так
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() 1;//January is 0!
Ссылка
еще один
Комментарии:
1. Спасибо, но месяц отображается просто отлично, и я получаю и устанавливаю месяц, используя PHP, а не JavaScript.