今天的日期是2014年1月27日,所以我使用以下功能得到了日期名称:
$t=date('d-m-Y');
$day = strtolower(date("D",strtotime($t)));
所以现在名称是mon
。
如何发现本周一是本月的第四个星期一? 换句话说,我想找到一个月的某一天(例如星期一)的第一,第二,第三,第四??
答案 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()。