为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
萧十郎 2023-11-03 16:56:30
我有点困惑,因为我有一些代码可以提前生成 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)我确信这很愚蠢,但我检查了日期上的所有各种帖子,但我一生都无法弄清楚这一点。
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

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



查看完整回答
反对 回复 2023-11-03
?
守着一只汪

TA贡献1872条经验 获得超3个赞

如果您查看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>";


查看完整回答
反对 回复 2023-11-03
  • 2 回答
  • 0 关注
  • 138 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信