php将工作日转换为日期

Zai*_*och 2 php date weekday

function dayDate($day) {
    $dayArr = array(
            0 => 'MONDAY',
            1 => 'TUESDAY',
            2 => 'WEDNESDAY',
            3 => 'THURSDAY',
            4 => 'FRIDAY',
            5 => 'SATURDAY',
            6 => 'SUNDAY'
        );

        $sunday = mktime(0, 0, 0, date('m'), date('d')+(1-date('w')), date('Y'));

        $n  = array_search("$day",$dayArr);
        $date   = date('m-d-Y', $sunday+$n*60*60*24);

    return $date;
}
Run Code Online (Sandbox Code Playgroud)

我使用上面的函数将工作日(例如星期一)转换为当前星期的日期,我在循环中使用此函数并传递$ day,如"SUNDAY""MONDAY",它返回我的日期.但由于某种原因,它错过了第一个星期天.

例如,如果今天的"2012年4月22日星期日"和我在星期日通过,它会给我下周日而不是今天的日期.

任何帮助将受到高度赞赏.

谢谢.

FtD*_*Xw6 5

你可以使用strtotime()魔法:

function dayDate($day) {
    return date('m-d-Y', strtotime('next ' . $day));
}
Run Code Online (Sandbox Code Playgroud)

但请考虑使用PHP的本机DateTime类:

function dayDate($day) {
    return new DateTime('next ' . $day);
}

$nextMonday = dayDate('Monday');
echo $nextMonday->format('m-d-Y'); // 04-30-2012
Run Code Online (Sandbox Code Playgroud)

使用该DateTime对象可以让你做一些非常整洁的东西,除了允许你从方法/函数中删除硬编码的日期格式,以防你需要动态更改它.