2009-03-30 7 views
0

私は、就業日の午前9時から午後5時までの間に働く関数を書いています。その後、今日の営業時間が終了したか、または深夜以降に開始するかに基づいて、翌営業日がいつ開始されるか(現在営業時間外の場合)が表示されます。PHP関数をテストするためにシステム時間をどのように相殺できますか?

これまでのところすべてがうまくいっていて、私はstrtotime()を使っていた可能性が最も高いコードを作成しましたが、どうすればstrtotime()をテストしますか?

テスト目的で一時的にシステム時刻を変更する方法はありますか?

答えて

3

strtotime()のオプションの第2引数を使用して、特定のタイムスタンプを使用するだけです。 2番目の引数を指定しないと、現在の時刻が使用されます。

+0

愚かな気分になりました - マニュアルをもっと徹底的に読むべきです! – Rudenoise

0

なぜ単なるstrtotime()の入力値の配列を持つ単体テストではないのですか?

... 
    test(strtotime("now")); 
    test(strtotime("10 September 2000")); 
    test(strtotime("+1 day")); 
    test(strtotime("+1 week")); 
    test(strtotime("+1 week 2 days 4 hours 2 seconds")); 
    test(strtotime("next Thursday")); 
    test(strtotime("last Monday")); 
1

のstrtotimeあなたは、現在の時刻の代わりに好きな

int型のstrtotime(文字列$時間[、int型$今])までの時間を設定する第2引数を受け取り

$時間があります今

$を模倣するフォーマットは、今では、現在の時刻を上書きしている場合

から日付を生成するためのタイムスタンプです。

プログラムは

$format = '2009-03-30 18:00' 
$timestamp = mktime(18,0,0,3,30,2009); 
strtotime($format,$timestamp); 
1

チェックアウトthis pageを実行します何時に関係なく月曜日3月30日の午後6時をテストしていないし、それはあなたが必要とするすべてです。 :)

0

strtotime()に2番目の引数を使用する必要はありません。あなたがhttp://www.teststrtotime.comを使用することができるのstrtotimeテストするには

// $now = time(); // use this once testing is finished 
$now = strtotime('03/15/2009 14:53:09'); // comment this line once testing is complete 

testTime($now); 
1

(キーを押してフォームを送信するために入力し、ボタンは今のところ壊れているようです)。

関連する問題