PHP DateTime-为';下周三';发火

PHP DateTime-为';下周三';发火,php,datetime,Php,Datetime,我使用下面的方法来计算时间表中的下一个时间是什么时候 public static function getNextUtcTimestampFromSchedule($schedule, $timezone) { $timestamps = array(); foreach ($schedule as $day => $times){ $dt = new \DateTime('next '.self::getDayString($day), new \Date

我使用下面的方法来计算时间表中的下一个时间是什么时候

public static function getNextUtcTimestampFromSchedule($schedule, $timezone)
{
    $timestamps = array();
    foreach ($schedule as $day => $times){
        $dt = new \DateTime('next '.self::getDayString($day), new \DateTimeZone($timezone));
        foreach ($times as $time){
            list($hour, $min) = explode(':', $time);
            $dt->setTime($hour, $min);
            $timestamps[] = $dt->getTimestamp();
        }
    }
    sort($timestamps);
    return $timestamps[0];
}
$schedule
是一个数组,如下所示:

$schedule = array(
    0 => array('11:00', '17:00'), 
    1 => array('10:00', '18:00'),
    2 => array('09:00', '18:00'), 
    3 => array('11:00', '17:00'),
    4 => array('11:00', '16:00'),
    5 => array('15:00', '16:00'),
    6 => array('11:00', '12:00'),
);
getDayString
简单地将例如0转换为“sunday”

为了编写单元测试,我需要伪造
now()
的时间,或者将它传递到方法中并使用它

问题是,我如何使用DateTime


i、 e.
DateTime(“下周三”)
需要被告知“现在”是什么时间,以便以可预测的方式计算出“下周三”,以便对其进行单元测试。

构造函数具有:

例如:

<?php
try {
    $date = new DateTime('2000-01-01');
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format('Y-m-d');
?>

但我将如何利用这一点,同时需要在“下周三”通过它?我已经在使用那个参数了。@bcmcfc看一下编辑。这将如何解决您的问题?啊,是的,当伪造的时间戳也被传递到strotime调用中时,这将起作用。谢谢
<?php
try {
    $date = new DateTime('2000-01-01');
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format('Y-m-d');
?>
$date = new DateTime(date("Y-m-d", strtotime("next wednesday")));