Проверьте действительный тип даты - PullRequest
1 голос
/ 24 июня 2011

возможно, этот вопрос был задан, я искал, но все еще не уверен в своей проблеме ..

моя проблема в проверке правильной даты из строки

$a='23-June-11'; //valid
$b='Normal String';//invalid

Я хочу конвертировать $ a и $ b, используя strtotime () прежде чем я это сделаю, конечно, я хочу проверить, является ли $ a или $ b допустимым форматом даты

Из $ a я могу получить 23, 11, используя функцию разнесения, но как насчет «июня»? используя функцию выше, 'июнь' не является числовым

Ответы [ 2 ]

7 голосов
/ 24 июня 2011

Почему бы не позволить strtotime() выполнить проверку?

Он вернет false, если это недопустимая дата.

В противном случае вам придется перестроить функциональность strtotime(), чтобы выполнить проверку - звучит как тщетнои большое) упражнение для меня.

1 голос
/ 24 июня 2011

В качестве альтернативы strtotime, которая будет принимать относительные даты, такие как «вчера», «последняя дата следующего месяца» и даже «-1 год», я предлагаю использовать strptime. Используется для анализа строки даты в соответствии с указанным форматом.

В вашем случае вы бы хотели strptime($date, '%d-%B-%y').

Пример:

<?php

// Set the locale as en_US to make sure that strptime uses English month names.
setlocale(LC_TIME, 'en_US');

$dates = array(
  '23-June-11',
  'Normal String'
);

foreach ( $dates as $date )
{
  if ( strptime($date, '%d-%B-%y') )
  {
    echo $date . ' is a valid date' . PHP_EOL;
  }
  else
  {
    echo $date . ' is an invalid date' . PHP_EOL;
  }
}

Выход:

23-June-11 is a valid date
Normal String is an invalid date
...