Php 为给定条件查找新年的代码

Php 为给定条件查找新年的代码,php,calendar,Php,Calendar,我来到一个网站,看到一个有趣的帖子,我正试图为此编写一个代码 你好,一周中的两天,星期六或星期天,哪一天是元旦 参考: 我找到了解决办法 历法每400年重复一次,但由于2100年等都不是闰年,所以分布不均匀。结果表明,星期日、星期二和星期五是每400年发生1月1日至58日最多的时间 Monday - 56 Tuesday - 58 Wednesday - 57 Thursday - 57 Friday - 58 Saturday – 56 Sunday

我来到一个网站,看到一个有趣的帖子,我正试图为此编写一个代码

你好,一周中的两天,星期六或星期天,哪一天是元旦

参考:

我找到了解决办法

历法每400年重复一次,但由于2100年等都不是闰年,所以分布不均匀。结果表明,星期日、星期二和星期五是每400年发生1月1日至58日最多的时间

   Monday - 56
   Tuesday - 58
   Wednesday - 57
   Thursday - 57
   Friday - 58
   Saturday – 56
   Sunday - 58
但我不明白,我怎么能在PHP中复制它

对于这些认为我没有尝试过下载我的问题的人。我已经测试了代码

function DayOfNewYearsDay($beginYear,$endYear)
{
for($i=$beginYear;$i<$endYear;$i++)
{
$day = date("l", mktime(1, 1, 1, 1, 1, $i));
if(isset ($days[$day]))
$days[$day]++;
else
$days[$day]=1;
}
return $days;
}

echo  print_r(DayOfNewYearsDay(2000, 2400));
newyearsday的函数日($beginYear,$endYear)
{

对于($i=$beginYear;$i我不想用勺子喂你。所以给出一个简单的算法

  • 创建一个数组
  • 数字范围为1600到2000
  • 创建日期为“Number-01-01”的datetime对象
  • 获取日期时间的星期日
  • 1
  • 只需打印数组

  • 使用DateTime对象绕过mktime中的php限制:

    function DayOfNewYearsDay ($beginYear, $endYear)
    {
        for ($i = $beginYear; $i < $endYear; $i++) {
            $date = new DateTime;
            $date->setDate($i, 1, 1);
            $day = $date->format('l');
            if (isset ($days[$day]))
                $days[$day]++;
            else
                $days[$day] = 1;
        }
    
        return $days;
    }
    
    newyearsday的函数日($beginYear,$endYear)
    {
    对于($i=$beginYear;$i<$endYear;$i++){
    $date=新的日期时间;
    $date->setDate($i,1,1);
    $day=$date->format('l');
    如果(设置($days[$day]))
    $days[$day]++;
    其他的
    $days[$day]=1;
    }
    返回$days;
    }
    

    好的,一个好的开始是将我们链接到帖子,这样我们就知道发生了什么……这是一个雅虎问题。有人也尝试了这里的代码。但它不起作用。我的主要动机是在PHP中复制这一点:(你得到了什么?),我已经写了alogo。但是我希望答案是星期天58。因为这是正确的答案。这就是为什么我在这里发布问题。如果你在年度范围
    1600
    -
    2000
    。并且我的答案中已经说明了。数组([星期四]=>316[星期三]=>15[星期五]=>15[星期日]=>14[星期一]=>14[星期二]=>13[星期六]=>13.当我使用echo print时,它会返回此消息(星期四]=>21[星期三]=>20[星期五]=>19[星期日]日历被窃听,只能从1901年到2038年工作,请看,即使我尝试echo print(星期二]=>13[星期六]=>13.它是纯打印数组([星期四]=>21[星期三]=>20[星期五]=>19[星期日]=>19[星期一]=>20[星期二]=>19[星期六]=>19):(