Как заставить php strtotime возвращать сегодняшнюю дату, если переменная даты пуста?

У меня есть календарь js на странице HTML, и я передаю выбранную дату в файл PHP. В настоящее время поле даты является обязательным, и в нем будет отображаться значение по умолчанию 1970/01/01, если в календаре не выбрана дата.

Я пытаюсь изменить поведение так, чтобы, когда дата не выбрана, текущая дата передавалась в файл PHP.

Код в файле PHP приведен ниже:

$mydate = strtotime($_POST['mydate']);
$mydate = date("Y/m/d",$mydate);

Как я могу изменить его, чтобы отображалась текущая дата, если от $_POST['mydate'] не было передано никакого значения?

PS: Я новичок в функциях PHP, и поиск похожих случаев на форумах не помог.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Причина этого в том, что strtotime возвращает false, если не может проанализировать дату. Ложь имеет тип 0, а дата 0 - 1970.

Что вы можете сделать, так это проверить, является ли возврат strtotime ложным. (На мой взгляд, не то же самое, что isset или 0).

$mydate = strtotime($_POST['mydate']);
if ($mydate === false){ // === is strict comparison
    $mydate = date("Y/m/d");
}else{
    $mydate = date("Y/m/d",$mydate);
}

Попробуй это:

if ( empty( $_POST['mydate'])){
  $mydate = date("Y/m/d");
} elseif ( FALSE !== $tm = strtotime( $_POST['mydate'])) {
  $mydate = date("Y/m/d", $tm);
} else {
  $mydate = date("Y/m/d");
}

Другие вопросы по теме