【问题标题】:Get the date of next monday, tuesday, etc获取下周一、周二等日期
【发布时间】:2009-07-27 15:09:44
【问题描述】:

我想找到星期一、星期二、星期三等的日期戳。如果这一天还没有到来,我希望日期是本周,否则,下周。谢谢!

【问题讨论】:

    标签: php datetime


    【解决方案1】:

    strtotime()

    strtotime('next tuesday');
    

    您可能可以通过查看周数来了解您是否已经过了那一天:

    $nextTuesday = strtotime('next tuesday');
    $weekNo = date('W');
    $weekNoNextTuesday = date('W', $nextTuesday);
    
    if ($weekNoNextTuesday != $weekNo) {
        //past tuesday
    }
    

    【讨论】:

    • 谢谢!这很有帮助。我只需要找出如何确定星期一是否已经到来。这不会太难!谢谢!
    【解决方案2】:

    我知道答案有点晚,但我想添加我的答案以供将来参考。

    // Create a new DateTime object
    $date = new DateTime();
    
    // Modify the date it contains
    $date->modify('next monday');
    
    // Output
    echo $date->format('Y-m-d');
    

    好消息是您也可以对今天以外的日期执行此操作:

    // Create a new DateTime object
    $date = new DateTime('2006-05-20');
    
    // Modify the date it contains
    $date->modify('next monday');
    
    // Output
    echo $date->format('Y-m-d');
    

    制作范围:

    $monday = new DateTime('monday');
    
    // clone start date
    $endDate = clone $monday;
    
    // Add 7 days to start date
    $endDate->modify('+7 days');
    
    // Increase with an interval of one day
    $dateInterval = new DateInterval('P1D');
    
    $dateRange = new DatePeriod($monday, $dateInterval, $endDate);
    
    foreach ($dateRange as $day) {
        echo $day->format('Y-m-d')."<br />";
    }
    

    参考文献

    PHP 手册 - DateTime

    PHP 手册 - DateInterval

    PHP 手册 - DatePeriod

    PHP 手册 - clone

    【讨论】:

    • 很好的答案。需要开始更频繁地使用 DateTime
    【解决方案3】:

    问题被标记为“php”,正如 Tom 所说,这样做的方法如下所示:

    date('Y-m-d', strtotime('next tuesday'));
    

    【讨论】:

      【解决方案4】:

      由于某种原因,strtotime('next friday') 显示当前一周的星期五日期。试试这个:

      //Current date 2020-02-03
      $fridayNextWeek = date('Y-m-d', strtotime('friday next week'); //Outputs 2020-02-14
      
      $nextFriday = date('Y-m-d', strtotime('next friday'); //Outputs 2020-02-07
      

      【讨论】:

      • 我正在尝试 2020 年 2 月 14 日的“下周五”,它会在 2020 年 2 月 18 日返回。似乎一切正常。
      【解决方案5】:

      您可以使用 Carbon 库。

      示例:下周星期五

      Carbon::parse("friday next week");
      

      【讨论】:

      • 如果星期五在同一周怎么办?
      • 例如,如果明天是星期五呢?操作人员说,如果这一天还没有到来,我希望它是这周,否则下周。谢谢法里德
      【解决方案6】:

      PHP 7.1:

      $next_date = new DateTime('next Thursday');
      $stamp = $next_date->getTimestamp();
      

      PHP手册getTimestamp()

      【讨论】:

        【解决方案7】:

        抱歉,我没有注意到 PHP 标记 - 但是其他人可能对 VB 解决方案感兴趣:

        Module Module1
        
            Sub Main()
                Dim d As Date = Now
                Dim nextFriday As Date = DateAdd(DateInterval.Weekday, DayOfWeek.Friday - d.DayOfWeek(), Now)
                Console.WriteLine("next friday is " & nextFriday)
                Console.ReadLine()
            End Sub
        
        End Module
        

        【讨论】:

          【解决方案8】:

          如果我理解正确,您想要接下来 7 天的日期吗?

          您可以执行以下操作:

          for ($i = 0; $i < 7; $i++)  
            echo date('d/m/y', time() + 86400 * $i);
          

          查看日期函数的文档以获取您想要的格式。

          【讨论】:

            【解决方案9】:

            如果你想找到星期一,那么 'dayOfWeek' 为 1,如果是星期二,则为 2,依此类推。

            var date=new Date();
            getNextDayOfWeek(date, 2);
            

            //这是为了寻找下周二

            function getNextDayOfWeek(date, dayOfWeek) {
            // Code to check that date and dayOfWeek are valid left as an exercise ;)
            
            var resultDate = new Date(date.getTime());
            
            resultDate.setDate(date.getDate() + (7 + dayOfWeek - date.getDay()) % 7);
            
            return resultDate;
            }
            

            希望对你有帮助,谢谢

            【讨论】:

              【解决方案10】:

              PHP documentation for time() 展示了如何在一周后约会的示例。您可以修改它,改为进入一个最多迭代 7 次的循环,每次获取时间戳,获取相应的日期,然后从中获取星期几。

              【讨论】:

                猜你喜欢
                • 2019-03-31
                • 1970-01-01
                • 2011-09-14
                • 1970-01-01
                • 2015-01-29
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多