Почему из формы приходит дата 01.01.1970?

Ссылка скопирована
1 ответ

Использую плагин WSForm, поля с датой.
После отправки формы приходит письмо с датой January 1 1970 независимо от выбора в поле.
Настройки формата в поле пробовал разные - не помогает.
Пробовал демоформу, не меняя никаких настроек - все равно приходит January 1 1970
В настройках WP стоит формат d F Y H:i

Дополнительно:

Ответы:

потому что это Timestamp=0, который соответствует дате 01.01.1970
https://www.unixtimestamp.com/
проверь, почему у тебя в базу пишется нулевое время, timestamp

  • я в курсе, что это timestamp = 0
    В базу значения пишутся корректно

    Почему из формы приходит дата 01.01.1970?

  • denism300, если честно, не вижу где тут timestamp, он должен быть Longint.
    и очень смущает другой формат времени для id=217
  • Steel_Balls, формат зависит от установленного в настройках. Игрался с разными.
    Проблема локализована, но не решена.
    Причина в JS DataTimePicker. Если в настройках плагина отключить его поддержку - приходит в почту корректно, если включить, то January 1 1970.
    Написал разрабам

Почему из формы приходит дата 01.01.1970?

Это приходит зарождение эпохи unix. Ошибка timestamp видимо

Сервер не настроен.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Дата 01.01.1970 почти всегда означает, что где-то значение даты превратилось в timestamp 0 или пустую дату, а потом было отформатировано как нормальная дата. Если в базе WSForm хранит выбранное значение корректно, проблема, скорее всего, на этапе шаблона письма, форматирования поля или преобразования даты перед отправкой.

Что проверить по порядку:

  1. Посмотрите сырое значение поля в записи отправки WSForm.
  2. Проверьте, какой merge tag используется в письме.
  3. Уберите кастомный формат даты и временно выведите поле без форматирования.
  4. Проверьте timezone WordPress и формат, который ожидает WSForm.

Если где-то в коде используется strtotime(), пустая строка или неверный формат могут дать false, а дальше при приведении получится нулевая дата:

$raw_date = '13.05.2026';
$timestamp = strtotime($raw_date);
 
if ($timestamp) {
    echo date_i18n('d.m.Y', $timestamp);
}

$raw_date = '13.05.2026'; $timestamp = strtotime($raw_date); if ($timestamp) { echo date_i18n('d.m.Y', $timestamp); }

Для русских форматов d.m.Y лучше использовать DateTime::createFromFormat():

$date = DateTime::createFromFormat('d.m.Y', $raw_date);
if ($date instanceof DateTime) {
    echo $date->format('d.m.Y');
}

$date = DateTime::createFromFormat('d.m.Y', $raw_date); if ($date instanceof DateTime) { echo $date->format('d.m.Y'); }

Если даже демоформа WSForm отдаёт 1970, проверьте версию PHP, сам плагин и конфликт с фильтрами даты в теме. Временно отключите сниппеты, которые меняют формат даты/времени, и проверьте отправку на стандартной теме. Так станет понятно, виноват плагин или сторонний код.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно