这个程序添加4年的日期有什么问题?

时间:2015-03-29 00:49:18

标签: php date strtotime

我正在尝试将4年添加到来自南美洲的日期格式的字符串中。我尝试了以下代码:

date_default_timezone_set('America/Sao_Paulo');
$date_string = '10/10/2014';
$date = date_create($date_string);
$date_us_string = date_format($date, 'Y-m-d');
$date2_us = strtotime('+4 year', $date_us_string);
$date2_string = date_format($date2_us, 'd/m/Y');

但它不起作用,我不知道为什么。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:4)

PHP应该向您显示错误。如果没有,您需要打开错误报告。这是错误:

  

警告:date_format()要求参数1为DateTimeInterface,给定

为null

这是因为该功能仅适用于DateTime()个对象。你是在整个代码中使用它们,这会导致更多错误。以下是更简单的工作代码(并始终使用DateTime()):

$date_string = '10/10/2014';
$date = new DateTime($date_string, new DateTimeZone('America/Sao_Paulo'));
$date->modify('+4 years');
echo $date->format('d/m/Y');

答案 1 :(得分:0)

只是出于好奇,这也有效:

$date_string = '30/10/2014';
$date_string = explode("/", $date_string);
$date_string = date('m/d/Y', mktime(0, 0, 0, $date_string[1], $date_string[0], $date_string[2]) );

function makeDate($date, $days, $mounths, $years){
    $date = date('d/m/Y', strtotime($date));
    $date = explode("/", $date);
    return date('d/m/Y', mktime(0, 0, 0, $date[1] + $mounths, $date[0] +  $days, $date[2] + $years) );
        }
        $dateadded = makeDate($date_string, 0, 0, 4);
        echo $dateadded;

DEMO