Php 根据日期查找一周中的特定日期

Php 根据日期查找一周中的特定日期,php,Php,我希望能够找到给定日期的“星期日”,格式为YYYY-MM-DD 。。。在PHP中如何实现这一点?查看PHP函数。如果找不到实现这一点的库,那么: 提出一个参考日期(1970年1月1日?),你知道一周中的哪一天 计算参考日期和给定日期之间的天数 取模7的答案 转换为一周中的某一天 strotime()可能对您有所帮助,它接受GNU日期输入格式,如“next Sunday” 这里有一个完整的多值示例 它适用于PHP或任何其他使用纪元时间(或类似时间)的语言 我不明白这个问题。。。你的意思是你想在有

我希望能够找到给定日期的“星期日”,格式为YYYY-MM-DD


。。。在PHP中如何实现这一点?

查看PHP函数。

如果找不到实现这一点的库,那么:

  • 提出一个参考日期(1970年1月1日?),你知道一周中的哪一天
  • 计算参考日期和给定日期之间的天数
  • 取模7的答案
  • 转换为一周中的某一天
  • strotime()可能对您有所帮助,它接受GNU日期输入格式,如
    “next Sunday”


    这里有一个完整的多值示例
    它适用于PHP或任何其他使用纪元时间(或类似时间)的语言

    
    
    我不明白这个问题。。。你的意思是你想在有约会的时候找到“下一个”星期天吗?例如,如果我给你2011-07-04(今天),你想返回2011-07-10(下一个周日)?@JaredCobb:那是因为没有问题。对不起,我想在同一周内找出“周日”的日期。因此,如果日期是2011-07-04,它应该返回2011-07-03。使用星期几算法(2*(3-((Y div 100)mod 4))+(Y mod 100)+(Y div 4)+monthlookup[M]+D)mod 7=星期几,即0=星期天1=星期一,等等。您只需从天数中减去该数字,即可得到“上一个”星期天你会怎么做“当前星期天”?所以如果今天是星期天,它将返回今天的日期,或者如果是星期一,它将返回昨天的日期?这正是我最终要做的。非常感谢!本回音日期('l Y-m-d',标准时间('sunday',标准时间('2011-07-02 Z'))。“
    ”;回音日期('l Y-m-d',strotime('sunday',strotime('2011-07-03 Z'))。“
    ”;回音日期('l Y-m-d',标准时间('sunday',标准时间('2011-07-04 Z'))。“
    ”;请记住:世界上有些人(例如我)习惯于认为一周从周一开始,所以对我来说,本周的周日是2011-07-10。这将“当前周日”视为“今天”,你可以写一个简短的例子;)你的链接没有回答这个问题。要找到startday,您需要更多。
    echo date('Y-m-d',strtotime('sunday',strtotime("2011-07-04 Z")));
    
    <?php
    
    function prevSunday($paramDay){
        $aDay = 24*60*60;
        $aWeek = $aDay * 7;
    
        $sunday = $aDay + $paramDay - (($paramDay - 3 * $aDay) % $aWeek);
    
        return $sunday;
    }
    
    $randDay   = 1309819423 + rand(0, 9000000);            //   this contanis a random day (and hours, minutes, seconds)
    $aSaterday = strtotime("20110702");
    $aSunday   = strtotime("20110703");
    $aMonday   = strtotime("20110704");
    
    echoTwoDays($aSuterday, prevSunday($aSuterday));
    echoTwoDays($aSunday,   prevSunday($aSunday));
    echoTwoDays($aMonday,   prevSunday($aMonday));
    /* echoes
    day1: Saturday 20110702
    day2: Sunday 20110626
    
    day1: Sunday 20110703
    day2: Sunday 20110703
    
    day1: Monday 20110704
    day2: Sunday 20110703     
    */
    echoTwoDays($randDay,   prevSunday($randDay));   // echoes a random date and perv sunday
    
    
    function echoTwoDays ($day1, $day2) {
        echo "day1: " . date("l Ymd", $day1) ."<br>";      // remove l as your request
        echo "day2: " . date("l Ymd", $day2) ."<br><br>";  // remove l as your request
    }
    
    function prevSunday($paramDay){
        $aDay = 24*60*60;
        $aWeek = $aDay * 7;
    
        $sunday = $aDay + $paramDay - (($paramDay - 3 * $aDay) % $aWeek);
    
        return $sunday;
    }
    
    ?>