-1

この関数を使用する特定の日付の後の将来の日付を取得したいのですstrtotime()が、うまくいきません

次に、次のコードを使用します

$d1='2012-11-08';
$d2=date($d1, strtotime('+3 days'));    
echo $d2;   

出力は 2012-11-08 2012-11-08 です

2012 年 11 月 11 日ではない

しかし、出力は 2012-11-11 ではありません 出力は 2012-11-08 です 私はこれを解決できません エラーとは何ですか? どのようにこれを解決しますか?

4

5 に答える 5

3
$d1='2012-11-08';
$d2=new DateTime($d1);
$d2->modify('+3 day');

echo $d2->format('Y-m-d');
于 2013-02-07T04:39:49.563 に答える
1

実際には間違って を追加しましたstrtotime(). 現在の日付を使用すると機能します. 日付をカスタマイズして追加したい場合, これを試すことができます.

<?php
 $d1='2012-11-08';
 $d2 = strtotime ( '+3 day' , strtotime ( $d1 ) ) ;
 $d3 = date ( 'Y-m-d' , $d2);
?>

現在の日付から日付を追加する場合は、次を使用します。

$d1 = Date('Y-m-d', strtotime("+3 days"));
于 2013-02-07T04:44:00.387 に答える
1

関数の使い方がdate()間違っています。ドキュメントに従って、date()フォーマット文字列の後にオプションのタイムスタンプが続きます。日付文字列と別の日付を指定しています。

strtotime使用して日付を変更し、

$date = "2012-11-08";
echo date("Y-m-d", strtotime($date. " + 3 days"));

しかし、PHP 5.2 以降を実行している場合は、おそらくDateTimeクラスを使用する必要があります。これは、日付処理がはるかに優れており、何が起こっているのかを簡単に確認できるためです。

$datetime = new DateTime("2012-11-08");
$datetime->modify("+ 3 days");    
echo $datetime->format("Y-m-d");
于 2013-02-07T04:44:33.403 に答える
1

使ってみてdate_add

$d1 = '2012-11-08';
$d2 = date_add($d1, date_interval_create_from_date_string('3 days'));
echo $d2;

http://www.php.net/manual/en/datetime.add.php

PHP 5.3 を実行していない場合、これは機能するはずです。

$d1 = '2012-11-08';
$d2 = strtotime('+3 days', strtotime($d1));    
echo date('Y-m-d', $d2);  
于 2013-02-07T04:37:08.427 に答える
0

便利strtotime()なツールですが、ロケールの問題が発生する傾向があります。

代わりに、PHP の成熟したDateTimeクラスを使用します。

$dt = new DateTime($d1);
echo $dt->add(new DateInterval('P3D'))->format('Y-m-d');
于 2013-02-07T04:38:47.823 に答える