我有一个约会,我想知道这个工作日有多少,从本月初开始。 (应该是1-5)
我需要这个号码的原因是因为我告诉客户我会在“本月的第4个星期三”提供一些东西。
我不需要只返回从预定义的开始日期开始的周数的东西(我能找到的每个例子就是这样)。
知道我已实现此代码的反向可能有所帮助,如下所示:
echo date('Y-m-d', strtotime("2013-08 4 Wednesday"));
//returns the 4th Wednesday of the month namely "2013-08-28"
如何从“2013-08-28”开始获得“4”?
答案 0 :(得分:1)
我会在这个问题上采取行动...我想如果你把PHP date()函数返回的月份数除以7和ceil(),它会给你正确的数字(I只是与我的日历相比,所以不是百分之百的保证)。以下代码包含一个函数,并在结尾处运行一个生成以下输出的测试循环
本月2日星期一 本月的第二个星期二 本月的第二个星期三 本月3日星期四 本月3日星期五 本月3日星期六 本月3日星期日 本月3日星期一 本月3日星期二 本月3日星期三 本月4日星期四 本月4日星期五 本月4日星期六 本月4日星期日 本月4日星期一 本月4日星期二
<?php
function getDateString($time) {
date_default_timezone_set ( "America/Los_Angeles" );
//$time = time();
$which_day = ceil((int) date('j', $time) / 7);
$which_day_name = date('D', $time);
$suffix = 'st';
switch ($which_day) {
case 2 :
$suffix = 'nd';
break;
case 3 :
case 4 :
case 5 :
$suffix = 'th';
break;
}
return $which_day . $suffix . ' ' . $which_day_name . ' of the month ' . PHP_EOL;
}
$time = time();
echo getDateString($time);
foreach (range(0, 15) as $day) {
$time = time() + ($day * 24 * 60 * 60);
echo getDateString($time);
}
?>
答案 1 :(得分:1)
这样的表达式应该只对代码进行最小的更改。
<?php
$d = date('d', strtotime("2013-08-28"));
echo ceil($d/7).PHP_EOL;
?>
输出'4'。我相信你可以把它包装成一个函数。
答案 2 :(得分:1)
或者,或者......
function getHowManyOfWeekday($d) {
$g = getdate($d);
return ceil($g['mday'] / 7) + 1;
}
// Some tests ...
echo getHowManyOfWeekday(strtotime("2013-08-07")). "\n";
echo getHowManyOfWeekday(strtotime("2013-08-11")). "\n";
echo getHowManyOfWeekday(strtotime("2013-08-18")). "\n";
echo getHowManyOfWeekday(strtotime("2013-08-19")). "\n";
echo getHowManyOfWeekday(strtotime("2013-08-31")). "\n";