Как узнать, содержит ли строка даты / времени день или нет в php?

#php #date

#php #Дата

Вопрос:

Я хочу проверить, содержит ли строка даты / времени день или нет.

Я использовал date_parse() функцию, но она автоматически добавляет day => 1, если не находит ни одного дня. Поэтому я не мог знать, содержит ли строка день или нет.

Например

 $date = "2021-02";
 

Как узнать, содержит ли эта строка день или нет?

Комментарии:

1. Как вы можете различать месяцы и дату до 12? оба одинаковы с 01 по 12?

2. $date = «2021-02»; также ясно, содержит ли эта строка день или нет? добавьте 2-3 примера и сообщите нам вывод как true или false, поскольку он содержит день или нет,

Ответ №1:

Метод DateTime::createFromFormat хорошо проверяет соблюдение формата. Такие записи, как «2019-02-» или «2019-xx-23», также распознаются как неправильные.

 $date = "2021-02-x";

$dateTime = DateTime::createFromFormat('Y-m-d',$date);

if($dateTime){
  echo $date.' ok';
}
else {
  echo 'wrong date '.$date;
}
 

Ответ №2:

Я думаю, вы ожидаете чего-то подобного.

 <?php
$date1 = "2021-02";
$date2 = "2021-02-11";
$date3 = "2021-12";
$date4 = "2021-12-14";
$date1_array = explode("-", $date1);
$date2_array = explode("-", $date2);
$date3_array = explode("-", $date3);
$date4_array = explode("-", $date4);

if (count ($date1_array) == 3)
{
    echo $date1 . ": It's a Date.";
    echo "<br />";
}
if (count ($date2_array) == 3)
{
    echo $date2 . ": It's a Date.";
    echo "<br />";
}
if (count ($date3_array) == 3)
{
    echo $date3 . ": It's a Date.";
    echo "<br />";
}
if (count ($date4_array) == 3)
{
    echo $date4 . ": It's a Date.";
    echo "<br />";
}

?>