3

私のサーバーには多くのアプリケーション インスタンスがあります。

アプリケーション インスタンスの 1 つを将来の日付でテストする必要があるという問題に遭遇しました。つまり、2013 年に実行されているアプリケーションをテストしたいと考えています。

システムの日付を変更すると、正常に動作しますが、他のインスタンスも影響を受けます。

1 つのインスタンスのみの将来の日付が必要で、残りはそのまま機能するはずです。

つまり、date('Ymd'); を使用する場合 3 か月間ジャンプして、将来の日付を表示する必要があります。

私のアプリケーションでは大きな変更になる可能性があるため、デフォルトの日付に秒を追加したくありません。

4

4 に答える 4

3

そのため、テスト可能な方法でアプリケーションを作成します。

良くない:

function doSomething() {
    $date = date('Y-m-d');
    ...
}

良い:

function doSomething($ts = null) {
    if (!$ts) {
        $ts = time();
    }
    $date = date('Y-m-d', $ts);
    ...
}
于 2012-10-04T12:17:24.040 に答える
2

独自の日付関数を作成できます。これは、すべての日付の使用に対するフックとして機能します。

function mydate($format) {
    $jump = ' +3 months';
    return date($format, strtotime(date($format) . $jump));
}

dateのすべてのオカレンスをに変更できますmydate。現在に戻ることにした場合は、そのままにしてください$jump = ''

于 2012-10-04T12:19:49.183 に答える
0

あなたはただすることができます

date('Y-m-d', time() + 3 * 30 * 24 * 3600);
于 2012-10-04T12:16:32.227 に答える
0

PHP5 の DateTime クラスを使用することをお勧めします。これらは少し冗長ですが、古いスタイルの PHP 日付処理関数よりもはるかに強力です。

$dateNow = new DateTime();
$dateAhead = $dateNow->add(DateInterval::createFromDateString('3 months'));

print $dateAhead->format('Y-m-d');
于 2012-10-04T12:21:06.347 に答える