将一天添加到日期

ian*_*ian 156 php datetime date

我在一天中添加一天的代码会返回一天添加2009-09-30 20:24:00日期: 添加一天后的日期应该转到下个月:1970-01-01 17:33:29

<?php

    //add day to date test for month roll over

    $stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));

    echo 'date before day adding: '.$stop_date; 

    $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));

    echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>
Run Code Online (Sandbox Code Playgroud)

之前我使用过非常相似的代码,我在这里做错了什么?

w35*_*l3y 310

<?php
$stop_date = '2009-09-30 20:24:00';
echo 'date before day adding: ' . $stop_date; 
$stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day'));
echo 'date after adding 1 day: ' . $stop_date;
?>
Run Code Online (Sandbox Code Playgroud)

对于PHP 5.2.0+,您还可以执行以下操作:

$stop_date = new DateTime('2009-09-30 20:24:00');
echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); 
$stop_date->modify('+1 day');
echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

  • 您不应该在字符串中使用变量.你应该使用:`date('Ymd H:i:s',strtotime($ stop_date.'+ 1天'));`就像@ w35l3y给你的答案一样. (11认同)
  • 谢谢.解决它:$ stop_date = date('Ymd H:i:s',strtotime("$ stop_date + 1天")); (3认同)

Pra*_*dra 88

$date = new DateTime('2000-12-31');

$date->modify('+1 day');
echo $date->format('Y-m-d') . "\n";
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更新的完美解决方案. (4认同)
  • @LucaMastrostefano 不,您应该在服务器上设置时区... (2认同)

min*_*are 25

最简单的解决方案

$date = new DateTime('+1 day');
echo $date->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)


Jay*_*aya 20

它适合我:当前日期

$date = date('Y-m-d', strtotime("+1 day"));
Run Code Online (Sandbox Code Playgroud)

对于任何日期:

date('Y-m-d', strtotime("+1 day", strtotime($date)));
Run Code Online (Sandbox Code Playgroud)

  • 你不需要重复和嵌套 `strtotime()` - 它可以在一次调用中处理所有事情:`date('Ym-d', strtotime($date . " +1 day"));` (4认同)
  • 谢谢它对我有用。给出的所有解决方案中最简单的。 (2认同)
  • 很好,这是最简单的解决方案!谢谢 (2认同)

小智 7

modify()可用于向现有值添加增量的方法DateTime

DateTime使用当前日期和时间创建一个新对象:

$due_dt = new DateTime();
Run Code Online (Sandbox Code Playgroud)

获得DateTime对象后,您可以通过添加或减去时间段来操纵其值:

$due_dt->modify('+1 day');
Run Code Online (Sandbox Code Playgroud)

您可以阅读有关PHP 手册的更多内容。


use*_*095 6

试试这个

echo date('Y-m-d H:i:s',date(strtotime("+1 day", strtotime("2009-09-30 20:24:00"))));
Run Code Online (Sandbox Code Playgroud)


joa*_*16v 5

易于阅读和理解的方式:

$original_date = "2009-09-29";

$time_original = strtotime($original_date);
$time_add      = $time_original + (3600*24); //add seconds of one day

$new_date      = date("Y-m-d", $time_add);

echo $new_date;
Run Code Online (Sandbox Code Playgroud)

  • 当白天长度不是24小时时,这有时会因夏令时变化而失败. (3认同)