下拉列表中的 PHP 格式日期不起作用

我有点困惑,因为我有一些代码可以提前生成 21 天的简单日期下拉列表。


它工作正常,但是输出没有显示正确的日期,而是显示 1970 年 1 月 1 日


$timestamp = strtotime('today');

$output = [];

for ($day = 0; $day < 21; $day++) {

    $output[] = date('d M y', strtotime(sprintf('+%d days', $day), $timestamp));

}

echo "<select name='days'>";

    foreach ($output as $day)

    {

        echo "<option value='".$day."'>".date('l jS \of F Y',$day)."</option>";

    }

echo "</select>";

如果我仅回显 $day 作为输出值,它将以 DD/MM/YYYY 格式显示,但我希望它显示日名称月年日


那么使用有什么不正确的


date('l jS \of F Y',$day)

我确信这很愚蠢,但我检查了日期上的所有各种帖子,但我一生都无法弄清楚这一点。


萧十郎
浏览 147回答 2
2回答

ABOUTYOU

函数 date() 将时间(以秒为单位)作为其第二个参数。

守着一只汪

如果您查看PHP:date文档,您会发现第二个参数需要一个整数,而不是字符串。将您的代码更改为以下内容:<?php$output = [];for ($day = 0; $day < 21; $day++) {    $output[] = strtotime(sprintf('+%d days', $day));}echo "<select name='days'>";foreach ($output as $day){    echo "<option value='".$day."'>".date('l jS \of F Y', $day)."</option>";}echo "</select>";您将在这里看到我们不是用字符串填充输出数组,而是用 21 个时间戳填充它。一旦开始循环输出数组,将时间戳传递给日期函数的第二个参数将产生您期望的输出。我将每个选项的值设置为该时间戳,因为如果您需要处理任何 POST 数据,它会让一切变得更容易处理。但您可以根据需要自由调整格式。这是一个您可以使用的工作示例。编辑:仅供娱乐,以下是如何以更面向对象的风格来完成此操作。我觉得这种方式更简洁,但是否采用这种方法取决于您。<?php$today = new DateTime();echo "<select name='days'>";for ($day = 0; $day < 21; $day++){    echo "<option value='".$today->getTimestamp()."'>".$today->format('l jS \of F Y')."</option>";    $today->add(new DateInterval("P1D"));}echo "</select>";
打开App,查看更多内容
随时随地看视频慕课网APP