【问题标题】:PHP weekdays of current week, why is date() and strtotime taking next week?本周的 PHP 工作日,为什么 date() 和 strtotime 需要下周?
【发布时间】:2012-08-01 09:26:23
【问题描述】:

我正在使用以下代码来获取工作日的 Y-m-d 格式:

$monday = date('Y-m-d', strtotime('Monday'));
$tuesday = date('Y-m-d', strtotime('Tuesday'));
$wednesday = date('Y-m-d', strtotime('Wednesday'));
$thursday = date('Y-m-d', strtotime('Thursday'));
$friday = date('Y-m-d', strtotime('Friday'));

今天是 2012-08-01(第 31 周),我需要的星期一值应该是 2012-07-30。

strtotime('Monday') 怎么会在下周一呢?

【问题讨论】:

  • 一周中所有尚未过去的日子是否都得到了正确的结果?这个问题的答案就是你的答案。
  • 计算机正在尝试帮助您避免头痛。如果您使用此代码获取约会的可用日期,您是否希望人们在过去安排。真的必须做出选择,是刚刚过去的星期一还是下星期一;唔!!你知道什么是有意义的!

标签: php date strtotime


【解决方案1】:

因为date('Y-m-d') 返回今天的日期,即八月。您正在将monday 转换为time。现在时间以date(Y-m-d)(2012 年 8 月)表示。所以显而易见的答案是从今天开始的下一个星期一。

所以要获取上周的日期,请使用

$monday=date(Y-m-d,strtotime('monday this week'))

【讨论】:

  • 感谢您指出这一点。我将如何获取本周的日期值 - 从周一到周五?
  • strtotime('Monday last week') 应该给出本周的星期一。
  • 你可以做一个date_modify,如图here。看来你需要提供一些测试,你不能假设星期一已经过去了。因此,您需要确定一周的开始日期,并且 if 该日期已过 -x day
  • :O这是什么魔法!这对我来说非常好
  • @irrelephant ya 'this week' 在 ideone 中不起作用,因为它使用的是 php 5.2.12。日期函数在 php 5.3 中修改
【解决方案2】:

对于我的应用程序,我只需要为本周的日期创建变量。

这就是我选择这段代码的原因:

$mon_value= date('Y-m-d', strtotime('Monday this week'));
$tue_value= date('Y-m-d', strtotime('Tuesday this week'));
$wed_value= date('Y-m-d', strtotime('Wednesday this week'));
$thu_value= date('Y-m-d', strtotime('Thursday this week'));
$fri_value= date('Y-m-d', strtotime('Friday this week'));

【讨论】:

    【解决方案3】:

    它总是返回第二天的类型。下周一是08-06,下周四是08-02。

    <?php
      function getDateOfWeekDay($day) {
        $weekDays = array(
          'Sunday',
          'Monday',
          'Tuesday',
          'Wednesday',
          'Thursday',
          'Friday',
          'Saturday',
        );
    
        $dayNumber = array_search($day, $weekDays);
        $currentDayNumber =  date('w', strtotime('today'));
    
        if ($dayNumber > $currentDayNumber) {
          return date('Y-m-d', strtotime($day));
        } else {
          return date('Y-m-d', strtotime($day) - 604800);
        }
      }
    
      echo  getDateOfWeekDay('Monday');
    ?>
    

    【讨论】:

    • @Speransky-wouldn't modify 使用对用户更友好的'-1 week'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2013-07-10
    相关资源
    最近更新 更多