【问题标题】:My variable is not being filled, remains empty我的变量没有被填充,仍然是空的
【发布时间】:2013-06-16 17:12:21
【问题描述】:

我在比较日期时遇到了问题。我通过 API 从数据库中提取一个日期。这些日期存储在一个数组中,因为一列包含多个日期,我必须循环浏览它们才能找到下一个即将到来的日期。日期格式为:'dd/mm/yy'

$rawDate = $e->calendarsummary;
$filter = preg_replace("/[a-z]/","", $rawDate);
$createArray = explode(',', $filter);
$dates = array_filter(array_map('trim', $createArray));
foreach($dates as $d)
{
     $dateTime = DateTime::createFromFormat('dmy', $d);
     if($dateTime >= $now)
     {
          $finalDate = $dateTime;
          $total = $finalDate->format('l j/m/y');
          break;
     }
}

如果我在$dateTime = DateTime::createFromFormat('dmy', $d); 之后放置 $dateTime 的 var_export,它将返回“假”。所以我猜 $dateTime 是空的,尽管我的数组 $dates 填充正确。

$dates 的 var_export 返回:

数组 (0 => '15/06/13', 1 => '16/06/13', )

$now 的 var 导出返回今天的日期:'16/06/13'

所以我有点困惑,为什么我的变量 $DateTime 仍然为空?

编辑:显然,'false' 的返回意味着它是一个错误,所以从数组中格式化我的日期时出现问题?

【问题讨论】:

    标签: php date compare


    【解决方案1】:

    如果$dates 数组包含15/06/13 等元素,请使用错误的日期格式。例如:

    $dateTime = DateTime::createFromFormat('d/m/y', $d);
    

    【讨论】:

      【解决方案2】:
      $dateTime = DateTime::createFromFormat('d/m/y', $d);
      

      不是

      $dateTime = DateTime::createFromFormat('dmy', $d);
      

      【讨论】:

        【解决方案3】:

        您的日期格式为d/m/y,而不是dmy。请尝试以下方法:

        $dateTime = DateTime::createFromFormat('d/m/y', $d);
        

        当我这样做时,我得到:

        class DateTime#1 (3) { public $date => string(19) "2013-06-15 17:17:12" public $timezone_type => int(3) public $timezone => string(3) "UTC" }
        

        ...而不是bool(false)

        【讨论】:

          【解决方案4】:

          您可以使用 strtotime 作为不同的方法。

          $now = date('d/m/y');
          
          foreach($dates as $d)
          {
          
          if(strtotime($d) >= strtotime($now))
          {
          
                 $finalDate = $dateTime;
                 $total = date('l j/m/y', strtotime($d));
                 break;
              }
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-08-03
            • 2019-12-08
            • 1970-01-01
            • 2017-01-21
            • 2017-12-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多