【问题标题】:PHP: How to get Day using Y-m-d?PHP:如何使用 Y-m-d 获取 Day?
【发布时间】:2010-07-26 22:11:28
【问题描述】:

我正在尝试使用“Y-m-d”日期格式获取日期(星期一、星期二、星期三...),但它没有给我确切的日期。

例如:

date("l","2014-07-26"); // Output: Thursday

但输出应该是:星期六

谢谢

【问题讨论】:

  • 只是补充一点:strtotime() 似乎确实支持 2038 年以后的日期(就像许多 Unix 应用程序一样),但 DateTime() 确实如此。显然仍然很想将 strtotime() 用于一个班轮(并且可能会在更接近时间的情况下进行修补),但如果可能根据长期指标计算任何内容,则需要注意。

标签: php date


【解决方案1】:

或与DateTime 对象

$dt = new DateTime('2014-07-26');
echo $dt->format('l'); // Saturday

或使用程序别名

echo date_format(date_create('2014-07-26'), 'l');

【讨论】:

  • 哦,这比我(和其他所有人)的 strtotime() 解决方案要好得多。对我不建议 DateTime() 类感到羞耻。
  • @Iain 这是一个替代方案。不多也不少。
  • 对于 PHP,我实际上认为值得提倡更新的 OO 接口,因为旧的内置方法的命名约定和参数顺序是如此不一致。并不是说我一直在实践我在这里宣讲的东西。 咳咳
  • @Iain Collins:无论如何,DateTime 构造函数实际上使用了 strtotime。当您只是在进行日期格式化时,DateTime 可能有点矫枉过正,尽管它非常棒。请记住:始终尝试使用可能有效的最简单的解决方案。
  • @Charles 我同意 strtotime() 在这个例子中有效;但不同意“可能可行的最简单的解决方案”是 PHP 开发人员特别需要做的更多事情。养成使用 DateTime 类的习惯有一些非常令人信服的理由(时区处理、支持更广泛的日期范围、异常处理和扩展,任何时候您需要进行额外的日期+时间操作)。虽然有点一般的 OOP 与程序性辩论。
【解决方案2】:

您可以按照其他人的建议使用 mktime(),但 strtotime() 更灵活且用户友好。

date('l', strtotime('2014-07-26')); 

【讨论】:

  • 实际上 Gordon 建议使用 DateTime 类可能是一个更好的主意(除非它真的更适合坚持使用单线)。
【解决方案3】:

date() 将 unix 时间戳作为它的第二个参数,而不是日期的字符串表示形式。如果你想这样做,你应该首先使用 strtotime() 转换为 unixtimestamp

【讨论】:

    【解决方案4】:

    一个非常简单的方法是使用strtotime:

    date("l",strtotime("2014-07-26"));
    

    【讨论】:

      【解决方案5】:

      php 日期函数接受格式和时间戳。使用“2014-07-26”作为时间戳是不正确的。您应该使用 unix 纪元时间戳。

      要做到这一点,你可以这样做:

      $t = "2014-07-26"; 
      $t = explode("-", $t); //not $t = array("2014", "07", "26"); 
      echo date("1", mktime(0,0,0,$t[1], $t[2], $t[0]); //using mktime with 
                                                        //hour, min, sec, month, day, year 
      

      【讨论】:

        【解决方案6】:

        第二个参数必须是时间戳。

        【讨论】:

          【解决方案7】:

          您必须先使用 mktime 将日期转换为时间戳

          date("l", mktime(0, 0, 0, 7, 26, 2014));
          

          date mktime

          【讨论】:

            猜你喜欢
            • 2021-03-09
            • 2011-10-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-16
            • 1970-01-01
            • 2010-12-23
            • 1970-01-01
            相关资源
            最近更新 更多