【问题标题】:php convert weekday to datephp将工作日转换为日期
【发布时间】:2012-04-23 14:13:45
【问题描述】:
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;
}

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

例如,如果它今天是“2012 年 4 月 22 日星期日”,而我在 SUNDAY 过去,它会给我下周日的日期而不是今天。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • 你考虑过date('l') 吗?
  • 你考虑过 strtotime() 吗?

标签: php date weekday


【解决方案1】:

您可以为此使用strtotime() 魔法:

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

请考虑改用 PHP 的原生 DateTime 类:

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

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

使用DateTime 对象除了允许您从方法/函数中删除硬编码的日期格式之外,您还可以做一些非常简洁的事情,以防您需要即时更改它。

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 2018-02-05
    • 2012-06-05
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2011-10-14
    相关资源
    最近更新 更多