[英]Calculate PHP difference between a date and a day of a month
我正在研究php函数,它根据一些变量进行数学运算以获得一年中的周数。
实际上,我有2个变量:
这是我设法组建的功能所以我可以获得一年中的一周:
$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”日例子,我想要的是以下内容:
关于如何修改功能的任何想法?
先感谢您!
我最好的问候,迈克尔
我不确定你是否过于复杂。 您不能只使用相同的方法提供日期并获取任何日期的周数吗? 甚至更简单:
$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
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 =>非跳跃,1 =>跳跃。 计算飞跃很容易。 并选择正确的数组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.