How to determine if value is a date in PHP

后端 未结 3 1344
不思量自难忘°
不思量自难忘° 2021-02-13 21:34

I am working with arrays of values in PHP. Some of these values may include a date in various string formats.

I need to convert dates in multiple formats to their numeri

3条回答
  •  一生所求
    2021-02-13 22:02

    In short, is there an easy way to check if a string value is a date?

    Not really, seeing as it could be in an arbitrary format.

    If at all possible, I would tend to leave parsing to the magic of strtotime(). If it manages to create a valid date, fine. If it doesn't, you'll receive false.

    Be prepared for the possibility of false positives, though, because strtotime() parses even things like "Last Friday".

    If strtotime() is too liberal for you, you could consider building a collection of date formats you want to accept, and run PHP 5.3's DateTime:createFromFormat using every one of the formats on every date.

    Something like (untested)

    $formats = array("d.m.Y", "d/m/Y", "Ymd"); // and so on.....
    $dates = array(1,2,3,"4","11/12/2009","22/12/2000",true,false);
    
    foreach ($dates as $input) 
     { 
       foreach ($formats as $format)
        {
          echo "Applying format $format on date $input...
    "; $date = DateTime::createFromFormat($format, $input); if ($date == false) echo "Failed
    "; else echo "Success
    "; } }

提交回复
热议问题