将1天添加到DATETIME格式值

时间:2009-08-17 05:20:50

标签: php mysql date datetime

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

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

这样做的最佳方式是什么?

9 个答案:

答案 0 :(得分:177)

使用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');

答案 1 :(得分:47)

如果你想在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));

如果你想在MySQL中添加日期:

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

答案 2 :(得分:19)

DateTime构造函数采用参数string time$time可以是不同的东西,它必须尊重datetime format

有一些有效值作为示例:

  • '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

答案 3 :(得分:9)

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

    $time = strtotime($myInput);
    $newTime = $time + 86400;
    

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

答案 4 :(得分:2)

您可以使用

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

答案 5 :(得分:1)

我建议您开始使用Zend_Date中的Zend Framework个类。我知道,它有点偏离外表,但我会这样: - )

$date = new Zend_Date();
$date->add('24:00:00', Zend_Date::TIMES);
print $date->get();

答案 6 :(得分:1)

您可以使用以下内容。

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

您还可以将天设置为常数,并按如下所示使用。

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

答案 7 :(得分:0)

使用服务器请求时间来添加天数。工作正常。

19/08/25 => 19/09/27

$timestamp = $_SERVER['REQUEST_TIME'];
$dateNow = date('d/m/y', $timestamp);
$newDate = date('d/m/y', strtotime('+2 day', $timestamp));

在“ +2天”中添加任意天数。

答案 8 :(得分:0)

有一种更加简洁直观的方法可以为php日期添加天数。不要误会我的意思,这些php表达式很棒,但是您始终必须通过Google搜索如何对待它们。我想念自动补全功能。

这是我喜欢处理这些情况的方式:

(new Future(
    new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'),
    new OneDay()
))
    ->value();

对我来说,这是更直观,自动完成的一种方式。无需每次都使用Google搜索解决方案。

作为一个不错的选择,您不必担心格式化结果值,它已经是ISO8601格式。

这是蛋白甜饼库,还有更多示例here