web-dev-qa-db-ja.com

DATETIME形式の値に1日を追加する

特定の状況では、DATETIME形式の変数の値に1日を追加します。

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

これを行う最良の方法は何ですか?

70
ian

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);
51
RaYell

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');
178
John Conde

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
20
Dmitry
  1. strtotimeを使用して、文字列をタイムスタンプに変換します
  2. 1日を追加します(例:86400秒(24 * 60 * 60)を追加して)

例えば:

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

1日しか追加されていない場合、strtotimeを再度使用するのはおそらくやり過ぎです。

9
nickf

Zend_DateZend Framework のクラスの使用を開始することをお勧めします。私は知っていますが、少しオフトピックですが、この方法が好きです:-)

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

使用できます

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

サーバー要求時間を使用して日を追加します。期待どおりに動作しています。

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

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

ここでは、「+ 2日」で任意の日数を追加します。

0
Niroshan