我的服務器有很多應用程序實例。默認日期()應該提前3個月
我遇到了一個問題,即我的某個應用程序實例需要在未來的日期進行測試。即我想測試應用程序,因爲它在2013年運行。
如果我更改系統日期,那麼它將正常工作,但其他實例也將生效。
我希望未來的日期只有一個實例,其餘的應該按原樣運行。
即,如果我使用日期('Y-m-d');它應該跳轉3個月並顯示未來日期。
我不想添加秒到默認日期,因爲這可能是我的應用程序的巨大變化。
我的服務器有很多應用程序實例。默認日期()應該提前3個月
我遇到了一個問題,即我的某個應用程序實例需要在未來的日期進行測試。即我想測試應用程序,因爲它在2013年運行。
如果我更改系統日期,那麼它將正常工作,但其他實例也將生效。
我希望未來的日期只有一個實例,其餘的應該按原樣運行。
即,如果我使用日期('Y-m-d');它應該跳轉3個月並顯示未來日期。
我不想添加秒到默認日期,因爲這可能是我的應用程序的巨大變化。
這就是爲什麼你的方式,是可驗證編寫應用程序。
不好:
function doSomething() {
$date = date('Y-m-d');
...
}
好:
function doSomething($ts = null) {
if (!$ts) {
$ts = time();
}
$date = date('Y-m-d', $ts);
...
}
+1。所有其他答案(包括我的)都建議增加三個月的方法,但這是唯一真正理解問題本質的方法。 – SDC
你可以讓你自己的日期功能。它將作爲所有日期使用的鉤子。
function mydate($format) {
$jump = ' +3 months';
return date($format, strtotime(date($format) . $jump));
}
您可以用比改變date
所有出現mydate
。如果您決定切換回現在,請離開$jump = ''
我推薦使用PHP5 DateTime類。它們更羅嗦一些,但比舊式的PHP日期處理函數更強大。
$dateNow = new DateTime();
$dateAhead = $dateNow->add(DateInterval::createFromDateString('3 months'));
print $dateAhead->format('Y-m-d');
我的問題是,如果我回復日期('Y-m-d'),我需要從現在開始的3個月的日期。我不想更改我的服務器日期,因爲它會影響其他應用程序。 – swaroop
您可以從手冊中查看[override_function](http://www.php.net/manual/en/function.override-function.php)。你知道, –