Скрипт календаря, устанавливающий неправильные даты (день минус один)?

#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.