将1天添加到DATETIME格式值

ian*_*ian 77 php mysql datetime date

在某些情况下,我想在我的DATETIME格式变量的值中添加1天:

$start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Joh*_*nde 186

使用在PHP 5.2中引入的DateTime,有多种方法可以做到这一点.与使用strtotime()此不同,将占夏令时和闰年.

$datetime = new DateTime('2013-01-29');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.3

$datetime = new DateTime('2013-01-29');
$datetime->add(new DateInterval('P1D'));
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.4

echo (new DateTime('2013-01-29'))->add(new DateInterval('P1D'))->format('Y-m-d H:i:s');

// Available in PHP 5.5

$start = new DateTimeImmutable('2013-01-29');
$datetime = $start->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)

  • 如果添加超过一天,您可以使用复数或单数并获得相同的结果,例如:`+ 2天'或'+ 2天'(显然`+2天'在语义上更正确) (8认同)

RaY*_*ell 57

如果你想在PHP中这样做:

// replace time() with the time stamp you want to add one day to
$startDate = time();
date('Y-m-d H:i:s', strtotime('+1 day', $startDate));
Run Code Online (Sandbox Code Playgroud)

如果要在MySQL中添加日期:

-- replace CURRENT_DATE with the date you want to add one day to
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)


小智 21

日期时间的构造函数需要一个参数string time.$time可以是不同的东西,它必须尊重日期时间格式.

有一些有效值作为示例:

  • 'now' (默认值)
  • 2017-10-19
  • 2017-10-19 11:59:59
  • 2017-10-19 +1day

因此,在您的情况下,您可以使用以下内容.

$dt = new \DateTime('now +1 day'); //Tomorrow
$dt = new \DateTime('2016-01-01 +1 day'); //2016-01-02
Run Code Online (Sandbox Code Playgroud)

  • 回答没有解释?阅读[我如何写出一个好的答案?](http://stackoverflow.com/help/how-to-answer) (3认同)

nic*_*ckf 9

  1. 使用strtotime的字符串转换为时间戳
  2. 添加一天(例如:加入86400秒(24*60*60))

例如:

$time = strtotime($myInput);
$newTime = $time + 86400;
Run Code Online (Sandbox Code Playgroud)

如果它只增加1天,那么再次使用strtotime可能是矫枉过正.

  • 我想还应该注意的是,不是每天都是24小时.在世界上大多数地方,夏令时(夏令时)意味着一年只有一天只有23小时,而另一天则是25小时. (4认同)

Oma*_*mar 7

您可以使用

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


小智 7

您可以按如下方式使用。

$start_date = date('Y-m-d H:i:s');
$end_date = date("Y-m-d 23:59:59", strtotime('+3 days', strtotime($start_date)));
Run Code Online (Sandbox Code Playgroud)

您还可以将天数设置为常数并按如下方式使用。

if (!defined('ADD_DAYS')) define('ADD_DAYS','+3 days');
$end_date = date("Y-m-d 23:59:59", strtotime(ADD_DAYS, strtotime($start_date)));
Run Code Online (Sandbox Code Playgroud)