我知道之前有人问过,但我看了所有这些解决方案,但他们不适合我。他们的开头是我没有开始的格式,但即便如此,我还是尝试了他们的解决方案,并且我一直将1970年作为我的结束日期。
所以我的开始日期格式为mm-dd-YYYY,我想在其中添加35天来创建结束日期。以下是我最终能够完成的工作,但它不一致,或者说我错了,它确实没有用。
我将开始日期转换为YYYY-mm-dd,因为我注意到的是使用strtotime函数更好的效果。我试着以不同的方式对它进行转换,但除了以爆炸方式进行之外没有任何效果。
因此,在格式转换之后再添加日期和转换格式,由于某种原因它会增加49天,即使我指定了35天。
我不知道还有什么可以尝试。
$startdate = "08-13-2015";
$pieces = explode("-", $startdate);
$newdate = $pieces[2]."-".$pieces[0]."-".$pieces[1];
$enddate = date('m-d-Y', strtotime($newdate. ' + 35 days'));
echo $enddate; //result is 10-01-2015 when it should be 09-17-2015
更新
根据我的需要进行了修改。使用变量作为开始日期。
$inputdate = new DateTime($startdate);
$inputdate->modify('+35 days');
$enddate = $inputdate->format('m-d-Y');
运行带代码的页面时出现以下错误:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (08-13-2015) at position 0 (0): Unexpected character' in path\file.php on line 9002
Exception: DateTime::__construct(): Failed to parse time string (08-13-2015) at position 0 (0): Unexpected character in path\file.php on line 9002
9002说:
$inputdate = new DateTime($startdate);
答案 0 :(得分:2)
DateTime
与DateTime::modify()
的{{1}}应该shown。
$date = new DateTime('08-13-2015');
$date->modify('+35 days');
echo $date->format('m-d-Y');
但请先检查您的PHP版本,如果它低于5.1,您将无法使用它,而在5.3下您将面临一些小错误。
答案 1 :(得分:1)
您可以使用mktime
$startdate = "08-13-2015";
$pieces = explode("-", $startdate);
$newdate2 = mktime(12, 0, 0, $pieces[0], $pieces[1] + 35, $pieces[2]);
$enddate2 = date('m-d-Y', $newdate2);
var_dump($enddate2); // 09-17-2015
答案 2 :(得分:0)
你需要阅读这个 http://php.net/manual/en/book.datetime.php 或使用像碳这样的日期库 https://github.com/briannesbitt/Carbon