添加到现有日期1年并删除1天的最佳方法是什么。所以,如果今天的日期是04/09/2013,我想要新的约会03/09/2014。还有每4年发行366天而不是365年的问题,如果开始日期是,它当然应该改变月份 01/09/2013然后结束日期应该是2014年8月31日。请帮忙。我的日期字段看起来像那样。我想我必须用mktime或时间做点什么?
$renewalDate = date('d F Y', strtotime($rows['CoverStartDate']));
答案 0 :(得分:6)
DateTime()
说明了闰年:
// PHP 5.2+
$dt = new DateTime($rows['CoverStartDate']);
$dt->modify('+1 year');
$dt->modify('-1 day');
$renewalDate = $dt->format('d F Y');
或:
// PHP 5.3+
$dt = new DateTime($rows['CoverStartDate']);
$dt->add(new DateInterval('P1Y'));
$dt->sub(new DateInterval('P1D'));
$renewalDate = $dt->format('d F Y');
或:
// PHP 5.5+
$renewalDate = (new DateTime('04/09/2013'))->add(new DateInterval('P1Y'))
->sub(new DateInterval('P1D'))
->format('d F Y');
答案 1 :(得分:3)
尝试:
$modificator = ' +1 year -1 day';
$renewalDate = date('d F Y', strtotime($rows['CoverStartDate'] . $modificator));
答案 2 :(得分:2)
看看strtotime可以做什么:
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
(摘自官方PHP manual)。
在你的情况下:
$renewalDate = date('d F Y', strtotime($rows['CoverStartDate']));
$desiredDate = date('d F Y', strtotime("{$renewalDate} + 1 year - 1 day"));
echo $date;
我自己尝试的例子是:
$date = date("d F Y");
$date = strtotime("{$date} + 1 year - 1 day");
$date = date("d F Y",$date);
echo $date;
并且输出2014年9月3日,这是正确的。
希望这有帮助!
答案 3 :(得分:1)
从今天起减去一天的一天: 今天 + 1年 - 1天
$yearMinusOneDay = Date("Y-m-d h:i:s", strtotime("now"." +1 Year "."-1 day"));