我正在研究php函数,根据一些变量进行数学计算以获得一年中的周数。
实际上,我有两个变量:
这是我设法组建的功能所以我可以获得一年中的一周:
$duedt = explode("-", "YYYY-MM-DD");
$date = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]);
$week = (int)date('W', $date);
作为上述代码的示例,如果我们将“YYYY-MM-DD”替换为“2014-02-09”,它将确定周数为6(女巫是正确的)
现在,我的问题是:如何修改它,以便跟踪第二个变量(“天标”)?
对于“2014-02-09”日例子,我想要的是以下内容:
关于如何修改功能的任何想法?
提前谢谢!
我最诚挚的问候, 迈克尔
答案 0 :(得分:2)
我不确定你是否过于复杂。您不能只使用相同的方法提供日期并获取任何日期的周数吗?或者甚至更简单:
$date = new DateTime('2014-02-08');
echo (int) $date->format('W'); // 6
$date = new DateTime('2014-02-09');
echo (int) $date->format('W'); // 6
$date = new DateTime('2014-02-10');
echo (int) $date->format('W'); // 7
答案 1 :(得分:0)
function week_day_of_month($day,$month_num, $year) {
$days_in_month = array(1=>31, 2 => 28,...);//doesn't account for leap, you need to
$ts = strtotime(format_date($day,$month_num,$year));
$week_num = date('W', $ts);
$month_days = $days_in_month[$month_num];
for ($i = 1;$i<=$month_days;$i++) {
$ats = strtotime(format_date($i,$month_num, $year));
if ($ats == $ts)
break;
}
$day = $i;
return array($day,intval($week_num));
}
format_date只需将m,d,y转换为strtotime可以解析的内容。 你可以通过在月内的几天内有两个数组来处理跳跃0 =&gt;非飞跃,1 =&gt;跳跃。计算飞跃很容易。并选择正确的数组