2017-05-14 70 views
0

我目前正在開發一個管理電子商務網站交付規則的應用程序。我需要測試一週中的某些日子和一天中的時間來測試他們有不同的交付規則。不幸的是,我正在使用多個其他項目的服務器上工作,因此無法編輯OS時間/日期。定義運行時PHP腳本的日期時間

date_default_timezone_set如何定義時區和設定在腳本中所有日期/時間函數的默認時區類似。有什麼我可以在我的腳本開始運行,以全面定義時間和日期,並在全球範圍內應用?我真的很想測試聖誕節的時間。

+0

這就是爲什麼你需要有生產和測試環境 –

+0

使用碼頭。它可以讓你指定不同的系統設置,並且非常易於使用。 –

+0

Alon,true,但我的測試/開發環境被其他開發人員使用。 – oli2020

回答

0

我不知道任何這樣的PHP函數。據我所知,這些信息是直接從操作系統中獲取的。

爲了簡化測試,您可以做的是使用單一方法獲取當前日期/時間戳。這將允許更簡單的單元測試。

例如,如果您需要獲取當前日期,則在函數的某個位置。

實用類:

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()之類的函數,這是否需要專門處理呢?