0

私は、1) 変数を現在の日付に設定し、2) Ymd としてフォーマットし、3) 過去 7 日間の日付を見つけるように変更しようとしています。

これを行うために使用しているコードは次のとおりです。

$date = new DateTime(); // get current date
$date->format('Y-m-d'); // format it 
$wow_date = $date->modify('-7 days'); // find 7 days before current date

これを実行すると 500 エラー コードが表示されますが、この問題の原因をトラブルシューティングできませんでした。誰かが私を正しい方向に向けることができれば幸いです。

アップデート

ヘルプ/コメントをありがとう。これが私が最終的に行ったものです:

$date = new DateTime(null, new DateTimeZone('America/Los_Angeles')); // get current date
$m_date = $date->format('Y-m-d'); // set it in format I need for queries
$wow_date = $date->modify('-7 days'); // get 7 days before
$m_wow_date = $wow_date->format('Y-m-d'); // format earlier date 
4

4 に答える 4

0

最終的な目標が、フォーマットされた 1 週間前の日付を含む文字列型の変数である場合、すべてを 1 行で実行できます。

$formattedDate = (new \DateTime())->modify('-7 days')->format('Y-m-d');
echo $formattedDate;

動いているのを見る

于 2013-08-03T06:15:52.553 に答える
0

このSOスレッドで回答:

$date = date('Y-m-d', strtotime('-7 days'));

または DateTime クラスで:

$date = new DateTime('7 days ago');
echo $date->format('Y-m-d');
于 2013-08-02T17:58:40.417 に答える
0

オブジェクト指向スタイルを使いたい場合は、これを試してください

$date->sub(new DateInterval('P7D'));

これはphp.netからのものです

于 2013-08-02T18:01:09.030 に答える
-1

アプリケーションのデフォルトのタイムゾーンを構成する必要があります。

php.ini でコメントを解除するか、次の行を追加してください。

[Date]
; Defines the default timezone used by the date functions
date.timezone = "America/Los_Angeles"

または、DateTime クラスを使用する前に php スクリプトを使用します。

date_default_timezone_set('America/Los_Angeles');

PHP MANUALでご希望のタイムゾーンを見つけてください

于 2013-08-02T18:01:52.367 に答える