2017-05-14 6 views
0

私は現在、EコマースWebサイトの配信ルールを管理するアプリケーションを開発中です。私は彼らが異なる配送ルールを持っていることをテストするために、特定の曜日と時間をテストする必要があります。残念ながら、私は複数の他のプロジェクトを持つサーバー上で作業しているため、OSの時刻/時刻の日付を編集することはできません。PHPスクリプトの実行時に日付時刻を定義します

date_default_timezone_setはタイムゾーンを定義でき、はスクリプトのすべての日付/時刻関数で使用されるデフォルトのタイムゾーンを設定します。スクリプトの開始時に、時間と日付を完全に定義するために実行できるものがあり、全体的に適用されていますか?私は本当にクリスマスの時間をテストしたいと思っています。

+0

そのため、本番環境とテスト環境が必要です。 –

+0

ドッカーを使用してください。それはあなたが異なるシステム設定を指定することができ、非常に使いやすいです。 –

+0

Alon、真だが、私のテスト/開発環境は他の開発者によって使用されている。 – oli2020

答えて

0

私はこのようなPHPの機能について認識していません。私が知る限り、この情報はオペレーティングシステムから直接取得されます。

テストを簡単にするために、現在の日付/タイムスタンプを取得するための方法を1つ用意することができます。これにより、より簡単なユニットテストが可能になります。

たとえば、現在の日付を関数内のどこかに取得する必要がある場合などです。

ユーティリティクラス:

class DateUtility { 
    public static function getCurrentDate() { 
     if (!Config::get('debug')) { 
      return date('j-M-Y'); 
     } 

     return date('j-M-Y', mktime(0, 0, 0, Config::get('debug-month'), Config::get('debug-day'), Config::get('debug-year')); 
    } 
} 

使用例:この例は非常に単純化されていることを

$date = DateUtility::getCurrentDate(); 
set_delivery_date($date); 

注意。おそらく、日付、タイムゾーン、そのようなものをたくさん扱う場合、あなたのシステムにもっと一般的な実装をする必要があります。また、MySQLなどでNOW()などの関数を使用する場合は、特別に処理する必要があることにも注意してください。

関連する問題