如何找到当天没有。在PHP的月份

时间:2014-01-27 09:58:11

标签: php date

今天的日期是2014年1月27日,所以我使用以下功能得到了日期名称:

$t=date('d-m-Y');
$day = strtolower(date("D",strtotime($t)));

所以现在名称是mon

如何发现本周一是本月的第四个星期一? 换句话说,我想找到一个月的某一天(例如星期一)的第一,第二,第三,第四??

3 个答案:

答案 0 :(得分:7)

数学部分归功于Jon(上图)

结合您的代码,可以按如下方式实现完整的解决方案

$t=date('d-m-Y');
$dayName = strtolower(date("D",strtotime($t)));
$dayNum = strtolower(date("d",strtotime($t)));
echo floor(($dayNum - 1) / 7) + 1

或作为具有可选日期的函数

PHP小提琴here

这只是返回您要求的号码。

function dayNumber($date=''){
    if($date==''){
        $t=date('d-m-Y');
    } else {
        $t=date('d-m-Y',strtotime($date));
    }

    $dayName = strtolower(date("D",strtotime($t)));
    $dayNum = strtolower(date("d",strtotime($t)));
    $return = floor(($dayNum - 1) / 7) + 1;
    return $return;
}


echo dayNumber('2014-01-27');

答案 1 :(得分:2)

$date = mktime(0, 0, 0, 1, 27, 2014);
$dayNumber = date("d", $date);
$dayOfWeek = date("l", $date);
$dayPosition = (floor(($dayNumber - 1) / 7) + 1);

switch ($dayPosition) {
    case 1:
        $suffix = 'st';
        break;
    case 2:
        $suffix = 'nd';
        break;
    case 3:
        $suffix = 'rd';
        break;
    default:
        $suffix = 'th';
}

echo "Today is the " . $dayPosition . $suffix . " " . $dayOfWeek . " of the month.";
// Will echo: Today is the 4th Monday of the month.

感谢@Jon的数学。

答案 2 :(得分:1)

对现有答案进行了一些改进。

每周的当前日期,只需:

echo date("N", time());

给定日期的星期几:

//$date in d-m-Y, modify for your needs
function dayNumber($date = null)     
{
    $date = $date ?? date('d-m-Y');
    $date = DateTime::createFromFormat('d-m-Y', $date);
    return $date->format("N");
}


echo dayNumber('24-12-2020');

我正在使用null合并运算符(PHP 7.0及更高版本)以及DateTime类和函数(PHP 5.3.0及更高版本)。

由于潜在的时区问题,我将避免使用strtotime()。