【问题标题】:php Regex for date format日期格式的php正则表达式
【发布时间】:2016-03-21 08:57:21
【问题描述】:

我有如下自定义日期格式:

M jS Y g:i a (Feb 23rd 2016 3:32 pm )

像这样将正则表达式写成那种格式真的很难,我怎么能检测到那个日期有那种格式?

【问题讨论】:

    标签: php regex date


    【解决方案1】:

    如果您不需要正则表达式,只需使用date_create_from_format 函数。如果无法解析字符串,它会返回FALSE,因此您可以检查它的返回值。

    $dateObject = date_create_from_format("M jS Y g:i a", "Feb 23rd 2016 3:32 pm");
    if ($dateObject === false) {
        // string is in a wrong format
    }
    

    【讨论】:

      【解决方案2】:

      正则表达式不是在您的情况下的最佳解决方案。 PHP 已经为从字符串解析日期/时间提供了很好的支持。

      使用DateTime::createFromFormat() 解析您的字符串。解析成功时返回有效的DateTime对象,解析失败时返回FALSE

      $date = DateTime::createFromFormat(
          'M jS Y g:i a',
          'Feb 23rd 2016 3:32 pm',
          new DateTimeZone('UTC')        // put your timezone here
      );
      print_r($date);
      

      它显示:

      DateTime Object
      (
          [date] => 2016-02-23 15:32:00.000000
          [timezone_type] => 3
          [timezone] => UTC
      )
      

      【讨论】:

        猜你喜欢
        • 2011-08-13
        • 2012-10-09
        • 1970-01-01
        • 2012-06-20
        • 1970-01-01
        • 2022-06-15
        相关资源
        最近更新 更多