我的服务器有很多应用程序实例。
我遇到了一个问题,我的一个应用程序实例需要在未来的日期进行测试。即我想测试应用程序,因为它在 2013 年运行。
如果我更改系统日期,它会正常工作,但其他实例也会生效。
我只想要一个实例的未来日期,其余的应该按原样工作。
即如果我使用 date('Ymd'); 它应该跳 3 个月并显示未来的日期。
而且我不想在默认日期中添加秒数,因为这可能是我的应用程序的巨大变化。
我的服务器有很多应用程序实例。
我遇到了一个问题,我的一个应用程序实例需要在未来的日期进行测试。即我想测试应用程序,因为它在 2013 年运行。
如果我更改系统日期,它会正常工作,但其他实例也会生效。
我只想要一个实例的未来日期,其余的应该按原样工作。
即如果我使用 date('Ymd'); 它应该跳 3 个月并显示未来的日期。
而且我不想在默认日期中添加秒数,因为这可能是我的应用程序的巨大变化。
这就是为什么您以可测试的方式编写应用程序的原因。
不好:
function doSomething() {
$date = date('Y-m-d');
...
}
好的:
function doSomething($ts = null) {
if (!$ts) {
$ts = time();
}
$date = date('Y-m-d', $ts);
...
}
您可以制作自己的日期功能。它将作为所有日期使用的挂钩。
function mydate($format) {
$jump = ' +3 months';
return date($format, strtotime(date($format) . $jump));
}
您可以更改所有出现的date
to mydate
。如果您决定切换回现在,请离开$jump = ''
你可以做
date('Y-m-d', time() + 3 * 30 * 24 * 3600);
我推荐使用 PHP5 DateTime 类。它们有点罗嗦,但比旧式 PHP 日期处理函数要强大得多。
$dateNow = new DateTime();
$dateAhead = $dateNow->add(DateInterval::createFromDateString('3 months'));
print $dateAhead->format('Y-m-d');