の形式のPHP日付があり、2013-01-22
明日の日付を同じ形式で取得したいので、たとえば2013-01-23
。
PHPでこれはどのように可能ですか?
回答:
日時を使用
$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d H:i:s');
または:
$datetime = new DateTime('2013-01-22');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
または:
$datetime = new DateTime('2013-01-22');
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d H:i:s');
またはPHP 5.4以降:
echo (new DateTime('2013-01-22'))->add(new DateInterval("P1D"))
->format('Y-m-d H:i:s');
$tomorrow = date("Y-m-d", strtotime('tomorrow'));
または
$tomorrow = date("Y-m-d", strtotime("+1 day"));
ヘルプリンク:STRTOTIME()
<? php
//1 Day = 24*60*60 = 86400
echo date("d-m-Y", time()+86400);
?>
/**
* get tomorrow's date in the format requested, default to Y-m-d for MySQL (e.g. 2013-01-04)
*
* @param string
*
* @return string
*/
public static function getTomorrowsDate($format = 'Y-m-d')
{
$date = new DateTime();
$date->add(DateInterval::createFromDateString('tomorrow'));
return $date->format($format);
}
奇妙なことに、それは完全にうまく機能しているように見えます: date_create( '2016-02-01 + 1 day' );
echo date_create( $your_date . ' + 1 day' )->format( 'Y-m-d' );
それをすべき
まず、正しい抽象化を思いつくことが常に鍵となります。可読性、保守性、拡張性の鍵。
ここで、非常に明白な候補はISO8601DateTime
です。少なくとも2つの実装があります。1つ目は文字列から解析された日時、2つ目は明日です。したがって、使用できる2つのクラスがあり、それらの組み合わせにより(ほぼ)望ましい結果が得られます。
new Tomorrow(new FromISO8601('2013-01-22'));
どちらのオブジェクトも ISO8601日時であるため、そのテキスト表現は必ずしも必要なものではありません。したがって、最後のストロークは日付形式を取ることです:
new Date(
new Tomorrow(
new FromISO8601('2013-01-22')
)
);
オブジェクトだけでなくテキスト表現も必要なので、value()
メソッドを呼び出します。
このアプローチの詳細については、この投稿をご覧ください。
ここで機能しています
function plus_one_day($date){
$date2 = formatDate4db($date);
$date1 = str_replace('-', '/', $date2);
$tomorrow = date('Y-m-d',strtotime($date1 . "+1 days"));
return $tomorrow; }
$date = '2013-01-22';
$time = strtotime($date) + 86400;
echo date('Y-m-d', $time);
ここで、86400は1日の秒数です。