如何设置PHP解释器的内部时间?

时间:2017-03-16 05:04:04

标签: php datetime

我用PHP编写了一个函数,它将打印每个月的第三个星期一 我现在想测试该功能,如果该功能将在下个月运行,而不必等到下个月。

我的想法是,通过内部设置PHP到下个月的时间并运行该功能,我可以测试该函数将来如何工作。

我希望有一个Date Time ini setting可以在我的功能之前插入,以便将时间转移到未来,例如

<?php

$one_month_from_now = time() + 2592000;
ini_set('php_internal_time', $one_month_from_now);

function print_third_monday() {
    // ....
}
print_third_monday();

有可能像这样改变PHP的内部时间吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:1)

echo date("y-m-d H:i:s D");//17-03-16 10:43:38 Thu
echo PHP_EOL;
echo date("y-m-d H:i:s D",strtotime("+1 month"));//17-04-16 10:43:38 Sun

答案 1 :(得分:0)

更好的功能如何实现相同的功能&amp;你可以轻松地交叉检查:

<?php
echo getThirdTuesdayofMonth(3,2017);

function getThirdTuesdayofMonth($month, $year) {
    $thirdTuesday='';
    $no_of_days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
    $tue_iter=0;
    for($i=1;$i<=$no_of_days;$i++) {
        if(date('l',strtotime($i.'-'.$month.'-'.$year))=='Tuesday') {
            if($tue_iter==3) {
                $thirdTuesday = date('dS F Y', strtotime($i.'-'.$month.'-'.$year));
            }  
            $tue_iter++; 
        }
    }
    return $thirdTuesday;
}