繁体   English   中英

计算日期和一个月中某天之间的PHP差异

[英]Calculate PHP difference between a date and a day of a month

我正在研究php函数,它根据一些变量进行数学运算以获得一年中的周数。

实际上,我有2个变量:

  1. 第一个是日期变量(YYYY-MM-DD格式);
  2. 第二个是“日期标记”变量(我有9个特定日期的列表 - > 2,6,8,10,14,17,21,23,27);

这是我设法组建的功能所以我可以获得一年中的一周:

$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”日例子,我想要的是以下内容:

  • 如果“day-mark”为10(表示该月的10号)=>周数为7
  • 如果“天痕”是8(表示该月的第8天)=>周数将是6

关于如何修改功能的任何想法?

先感谢您!

我最好的问候,迈克尔

我不确定你是否过于复杂。 您不能只使用相同的方法提供日期并获取任何日期的周数吗? 甚至更简单:

$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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM