web-dev-qa-db-ja.com

PHPの$ Dateに日数を追加する

MySQLクエリの一部として2010-09-17の形式で返された日付があります。

変数$ Date2から$ Date5を次のように設定します。

$Date2 = $Date + 1

$Date3 = $Date + 2

等..

2010-09-182010-09-19などを返すように...

私が試してみました

date('Y-m-d', strtotime($Date. ' + 1 day'))

しかし、これは私に$Dateの前の日付を与えます。

自分のDatesを 'Y-m-d'の形式で他のクエリで使用できるようにする正しい方法は何ですか?

179
Istari

あなたがしなければならないのは、このようにdaysの代わりにdayを使うことです:

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

そしてそれは正しく出力されます。

2010-09-18
2010-09-19
366
shamittomar

PHP 5.3を使用している場合は、 DateTime オブジェクトとその add メソッドを使用できます。

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

DateInterval constructor マニュアルページを見て、あなたの日付に追加する他のピリオドの作り方を見てください(2日は'P2D'、3は'P3D'など)。

PHP 5.3がなくても、strtotimeを使った方法で使えるはずです(私はテストしましたが、5.1.6と5.2.10の両方で動作します)。

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"
68

PHP 5.2以降では、DateTimeオブジェクトでmodifyを使用できます。

http://php.net/manual/en/datetime.modify.php

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

月を追加するときには注意してください。

22
Omn

これは日付の変更を説明するための小さな断片です。

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";
17
Madhu V Rao

次の形式も使用できます

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

このようにして変更を積み重ねることができます。

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

このアプローチと他の答えのアプローチとの違いに注意してください。値+1 day<timestamp>を連結する代わりに、タイムスタンプをstrtotimeの2番目のパラメータとして渡すことができます。

8
SztupY

日数に変数を使用する

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date 
4
FrozenButcher

これがあなたのクエリに対する最も簡単な解決策です。

$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days 
echo date_format($date,"Y-m-d"); //set date format of the result
3
Engr Atiq

これを解決する簡単な方法があります。

<?php
   $date = "2015-11-17";
   echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>

出力は以下のようになります。

2015-11-22

ここから解決策が見つかりました - PHPで日付を日付に追加する方法

2
JoyGuru

すべてが以下のコードを使用する必要があります。

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";
0
vikasgore