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_Leap Year - Fatal编程技术网

使用php函数计算特定日期

使用php函数计算特定日期,php,date,leap-year,Php,Date,Leap Year,我有一个计算一年中有多少天的函数,通过将$week变量从以下位置更改为: 星期一-6:Saturday,但如果我把7:code>星期天放进去,它就不起作用了 有人能帮忙吗。我有没有遗漏任何逻辑 $year = 2016; $newyear = $year; $week = 0; $day = 0; $mo = 1; $days = array(); $i = 1; while ($week != 7) { // here is where I change the 1-7 fo

我有一个计算一年中有多少天的函数,通过将
$week
变量从以下位置更改为:

星期一-6:Saturday
,但如果我把7:code>星期天放进去,它就不起作用了

有人能帮忙吗。我有没有遗漏任何逻辑

$year = 2016;
$newyear = $year;
$week = 0;
$day = 0;
$mo = 1;
$days = array();
$i = 1;

        while ($week != 7) { // here is where I change the 1-7 for days
          $day++;
          $week = date("w", mktime(0, 0, 0, $mo,$day, $year));
        }

        array_push($days,date("r", mktime(0, 0, 0, $mo,$day, $year)));
        while ($newyear == $year) {
          $x =  strtotime(date("r", mktime(0, 0, 0, $mo,$day, $year)) . "+" . $i . " week");
          $i++;
          if ($year == date("Y",$x)) {
            array_push($days,date("r", $x));
          }
          $newyear = date("Y",$x);
        }

        print count($days);

谢谢你的帮助,干杯!并且可以立即计算2年的总天数,例如:

我有一个日期是2016年1月11日,也就是周一,我想知道从2016年1月11日到2018年1月11日有多少天,有多少个周一


谢谢大家!

使用DateTime/DateInterval函数:

$datetime1 = new DateTime('2018-01-11');
$datetime2 = new DateTime('2016-01-11');
$interval = $datetime1->diff($datetime2);
echo floor($interval->format('%a days')/7); // 104
或者使用strotime

您也可以这样做:

$startDate = strtotime('2016-01-11');
$endDate = strtotime('2018-01-11');
$totalWeeks = (($endDate - $startDate)/86400)/7;
echo floor($totalWeeks); // rounds to 104
请在此处阅读更多信息:

DateDiff-

日期间隔::格式-

更新。。。如何轻松地“调试”这一天的计数:

<?php

$startDate = strtotime('2016-01-11');
$endDate = strtotime('2018-01-11');
$currentDate = $startDate;

$count = 0;
while ($currentDate <= $endDate) {
    echo date('r', $currentDate) . "\n";
    $currentDate = strtotime('+1 week', $currentDate);
    if ($currentDate<=$endDate) {
        $count++;
    }
}

echo $count . "\n";

已修改:

<?php
$date_1 = $from = strtotime('2016-01-11');
$date_2 = strtotime('2018-01-11');
$days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
$count = 0;
while ($date_1 < $date_2) {
  if(date('l', $date_1) == $days[0]);
  {
    $count++;   
  }
  $date_1 += 7 * 24 * 3600;
}
echo "From : ".date('Y-m-d',$from)."  To : ".date('Y-m-d',$date_2)."  has $count  $days[0]";
?>
你可以在两个日期之间找到一周中的任何一天。只需更改$days的值[0]

周一:

<?php
$date_1 = $from = strtotime('2016-01-11');
$date_2 = strtotime('2018-01-11');
$days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
$count = 0;
while ($date_1 < $date_2) {
  if(date('l', $date_1) == $days[0]);
  {
    $count++;   
  }
  $date_1 += 7 * 24 * 3600;
}
echo "From : ".date('Y-m-d',$from)."  To : ".date('Y-m-d',$date_2)."  has $count  $days[0]";
?>

星期是0(星期日)到6(星期六),请看用php或任何其他语言与时间一起工作是一堆蠕虫。我建议尝试一下它是专门为这类事情设计的。检查这些问题:| | | |因为你是StackOverflow的新手:如果它解决了你的问题,一定要接受答案,谢谢,我只需要知道具体的一天,比如在这20年中有多少个星期一……看看我的新答案,看看它是否回答了你的问题,让我知道这对你是否有效。你在寻找星期一之间的计数吗?或者你想包括第一个星期一和最后一个星期一?嗨,克莱顿!是的,星期天可以,但是如果我想知道星期一的情况?还是星期二?是否有任何选项可以将值更改为1,然后它会告诉我有多少个星期一,或者2,然后它会告诉我有多少个星期二?非常感谢。我试图构建一个小函数,当我输入日期时,假设日期是星期一,然后计算20年内有多少个星期一,如果日期是星期五,那么20年内有多少个星期五,诸如此类
From : 2016-01-11 To : 2018-01-11 has 105 Monday