我有一个字符串格式的日期,例如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
之类的字符串,或者有更快更有效的方式?
答案 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.