Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算一个日期和一个月中某一天之间的PHP差值_Php_Date_Datetime_Days - Fatal编程技术网

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

计算一个日期和一个月中某一天之间的PHP差值,php,date,datetime,days,Php,Date,Datetime,Days,我正在开发一个php函数,它可以根据一些变量计算一年中的周数 实际上,我有两个变量: 第一个是日期变量(YYYY-MM-DD格式) 第二个是“day mark”变量(我有一个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 =

我正在开发一个php函数,它可以根据一些变量计算一年中的周数

实际上,我有两个变量:

  • 第一个是日期变量(YYYY-MM-DD格式)
  • 第二个是“day mark”变量(我有一个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”日示例,我想要的是:

    • 如果“日标记”为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
    
    功能周/日/月($day,$month,$num,$year){
    $days_in_month=array(1=>31,2=>28,…)//不考虑leap,您需要
    $ts=标准时间(格式为日期($day,$month,$num,$year));
    $week_num=日期($W',$ts);
    $month_days=$days_in_month[$month_num];
    
    对于($i=1;$i non-leap,1=>leap。计算leap很简单。选择正确的数组

    Hello John,谢谢你的代码。的确,这个想法有点“过于复杂”,但本质上很简单:)事实上,找出这段代码中的周数,将有助于打开包含数据的特定excel电子表格:)这就是我需要这两个变量的原因!再次感谢您的代码,但这不是我想要实现的。。。
    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));
    }