38

私が扱っている日時文字列の例を次に示します。

Tue May 15 10:14:30 +0000 2012

これに1時間を追加する私の試みは次のとおりです。

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('P1h'));

しかし、2 行目で、変換できなかったというエラーが表示されます。

ありがとう。

4

3 に答える 3

85

T時間指定部分の前に追加する必要があります。

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->add(new DateInterval('PT1H'));

DateInterval コンストラクターのドキュメントを参照してください。

形式は、「ピリオド」を表す文字 P で始まります。各期間は、整数値とそれに続く期間指定子で表されます。期間に時間要素が含まれる場合、仕様のその部分の前に文字 T が付きます。

(強調を追加)

于 2012-05-15T09:32:58.367 に答える
25

以前の回答は正常に機能します。ただし、通常、外部でホストされている Web サイトでは datetime の変更を使用します。詳細については、 php のマニュアルを参照してください。提案されたコードでは、次のように動作するはずです。

$time = 'Tue May 15 10:14:30 +0000 2012';
$dt = new DateTime($time);
$dt->modify('+ 1 hour');

オブジェクト指向を使用していない場合は、次のように使用してください (最初の行の DateTime は、このスレッドに何か新しいものをもたらすためだけに、サーバーの時間を確認するために使用します)。

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']);  // convert UNIX epoch to PHP DateTime
$dt = date_modify($dt, "+1 hour");

一番、

于 2016-02-01T00:19:31.730 に答える
8

使用strtotime():

$time = 'Tue May 15 10:14:30 +0000 2012';
$time = strtotime($time) + 3600; // Add 1 hour
$time = date('D M j G:i:s O Y', $time); // Back to string
echo $time;
于 2012-05-15T09:33:24.470 に答える