【问题标题】:Class 'DateInterval' not found找不到类“DateInterval”
【发布时间】:2014-06-24 04:55:16
【问题描述】:

我想获取两个日期之间的日期,不包括最后一个日期,我将使用以下代码来查找日期。但它触发了一个错误说:

找不到类“DateInterval”

代码:

$start = new DateTime('2014-08-06');
$end = new DateTime('2014-09-06');
$oneday = new DateInterval("P1D");

$days = array();
$data = "7.5";

foreach(new DatePeriod($start, $oneday, $end->add($oneday)) as $day) {
    $day_num = $day->format("N");

    if($day_num < 6) { 
        $days[$day->format("Y-m-d")] = $data;
    } 
} 

print_r($days);

【问题讨论】:

标签: php date dateinterval


【解决方案1】:

看起来您的 php 版本没有 DateInterval 类。这是使用strtotime() 的替代方法:

$start = '2014-08-06';
$end = '2014-09-06';

$num_days = floor((strtotime($end)-strtotime($start))/(60*60*24));
$data = '7.5';

$days = array();

for ($i=0; $i<$num_days; $i++) 
    if (date('N', strtotime($start . "+ $i days")) < 6)
        $days[date('Y-m-d', strtotime($start . "+ $i days"))] = $data;

print_r($days);

结果:

Array
(
    [2014-08-06] => 7.5
    [2014-08-07] => 7.5
    [2014-08-08] => 7.5
    [2014-08-11] => 7.5
    [2014-08-12] => 7.5
    [2014-08-13] => 7.5
    [2014-08-14] => 7.5
    [2014-08-15] => 7.5
    [2014-08-18] => 7.5
    [2014-08-19] => 7.5
    [2014-08-20] => 7.5
    [2014-08-21] => 7.5
    [2014-08-22] => 7.5
    [2014-08-25] => 7.5
    [2014-08-26] => 7.5
    [2014-08-27] => 7.5
    [2014-08-28] => 7.5
    [2014-08-29] => 7.5
    [2014-09-01] => 7.5
    [2014-09-02] => 7.5
    [2014-09-03] => 7.5
    [2014-09-04] => 7.5
    [2014-09-05] => 7.5
)

【讨论】:

    【解决方案2】:

    PHP 的DateInterval class 是在 PHP 5.3.0 版本中引入的,因此如果您使用的是较低版本的 PHP,您将收到错误消息,指出它不知道该类。

    如果您确实使用低于 5.3.0 的 PHP 版本,我强烈建议您升级您的 PHP 版本。

    【讨论】:

    【解决方案3】:

    试试

    $begin = new DateTime('2014-08-06');
    $end = new DateTime('2014-09-06');
    $end = $end->modify( '+1 day' ); 
    $days = array();
    $data = "7.5";
        while($begin < $end) {
            $day_num = $begin->format("N"); 
                if($day_num < 6) { 
                       $days[$begin->format("Y-m-d")] = $data;
                } 
                $begin->modify('+1 day');
        }
    print_r($days);
    

    //输出:-

    Array
    (
        [2014-08-06] => 7.5
        [2014-08-07] => 7.5
        [2014-08-08] => 7.5
        [2014-08-11] => 7.5
        [2014-08-12] => 7.5
        [2014-08-13] => 7.5
        [2014-08-14] => 7.5
        [2014-08-15] => 7.5
        [2014-08-18] => 7.5
        [2014-08-19] => 7.5
        [2014-08-20] => 7.5
        [2014-08-21] => 7.5
        [2014-08-22] => 7.5
        [2014-08-25] => 7.5
        [2014-08-26] => 7.5
        [2014-08-27] => 7.5
        [2014-08-28] => 7.5
        [2014-08-29] => 7.5
        [2014-09-01] => 7.5
        [2014-09-02] => 7.5
        [2014-09-03] => 7.5
        [2014-09-04] => 7.5
        [2014-09-05] => 7.5
    )
    

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      相关资源
      最近更新 更多