使用php在字符串格式中添加一年的日期

时间:2014-08-28 06:26:41

标签: php date datetime

我有一个字符串格式的日期,例如string(10) "30/08/2014",我需要添加一年的日期。在我的情况下,我将30/08/2015我试图使用这样的东西,但我失败了......

        $start = new DateTime($details['start_date']);
        $start->add(new DateInterval('P1Y'));
        $end_date = $start;

有什么建议吗?谢谢!

我现在得到的错误是"DateTime::__construct(): Failed to parse time string (30/08/2014) at position 0 (3): Unexpected character" 我是否必须格式化Y-m-d之类的字符串,或者有更快更有效的方式?

4 个答案:

答案 0 :(得分:3)

这可能适合你。

$end_date = strtotime(date($details['start_date'])." + 1 year"); 

strtotime函数需要一个包含英文日期格式的字符串,并尝试将该格式解析为Unix时间戳。

答案 1 :(得分:2)

是的,您可以在该日期添加一年。例如:

// you have to define the format of the date that you're feeding
$start = DateTime::createFromFormat('d/m/Y', '30/08/2014'); // create format first ($details['start_date'])
// then use the method ->add() and feed it with a DateInterval Object with the proper interval
$start->add(new DateInterval('P1Y')); // add the year
$end = $start->format('d/m/Y'); // assign it to a variable
echo $end; // 30/08/2015

答案 2 :(得分:2)

以Y-m-d格式转换日期

$var = '20/04/2012';
$date = str_replace('/', '-', $var);
$new_date = date('Y-m-d', strtotime("+1 year", strtotime($date)));

因为,PHP与dd / mm / yyyy格式不兼容。

我希望这会对你有所帮助。

答案 3 :(得分:2)

$date = '25/05/2010';
$date = str_replace('/', '-', $date);
echo  date('Y-m-d', strtotime("+1 year", strtotime($date)));

结果:

2010-05-25

strtotime文档写道:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator
between the various components: if the separator is a slash (/), then the 
American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), 
then the European d-m-y format is assumed.