DateInterval:从现在起的年份

DateInterval:从现在起的年份

问题描述:

我需要修改代码,以便它将发送2年的日期而不仅仅是一年。DateInterval:从现在起的年份

我试图更改为$year_from_now->add(new DateInterval('P2Y'));但它不起作用。

请参见下面的代码:

$year_from_now=new DateTime(); 

    $year_from_now->add(new DateInterval('P1Y')); 


    $dates_array = array(); 

    foreach ($tariffs as $beds24_room_type=>$tariff_type_dates) { 

     $counter = 1; 

     foreach ($tariff_type_dates as $tariff_type=>$tariff_dates) { 

      $odo = "p".$counter; 

      foreach ($tariff_dates as $date=>$tariff_details) { 

       $this_date=date_create(date("Y/m/d" , strtotime($date))); 

       $diff=date_diff($year_from_now,$this_date); 

       if ( 

        (int)$diff->format("%R%a") <= 0 && // Up to one year from today 

        (int)$diff->format("%R%a") > -365 // Not earlier than today 

        ) { 
+1

'添加(“+ 1年”)'不这样做的吗? – Qirel

+1

'$ date-> add(new DateInterval('P2Y'));'是正确的工作代码;在generell中'它不会工作'不是一个有效的错误描述 - 指定你期望的结果,以及实际结果是什么 - 用最少的代码显示错误行为。 –

+0

添加对date_default_timezone_set()的调用。这是我必须做的,才能让它在我的系统上运行。 – Nic3500

。在你自己的代码中的问题。 P2Y应该可以工作。

尝试在一个空文件来执行下面的代码,你会发现它是正确的

<?php 
    $year_from_now=new DateTime(); 
    $year_from_now->add(new DateInterval('P2Y')); 

    echo $year_from_now->format('Y-m-d H:i:s'); 
?> 
+0

只有在设置中设置了date.timezone或者如果您调用了date_default_timezone_set(),它才会起作用。无论如何,这就是它在我的系统上所做的。 – Nic3500

+0

这没有任何意义,如果您没有正当理由,则无需冷静观察。学习PHP并在回答废话之前阅读问题+答案。如果问题出现在时区中,则P1Y不起作用。 – Boratzan

+0

你说过:“试着在一个空文件中执行下面的代码,你会发现它是正确的”,它不起作用。 – Nic3500