如何修改代码,用PHP按‘日 月份全称 年份’格式展示日期结果?
改用PHP格式化提交的日期为「日 月份全称 年份」格式的解决方案
嘿,我来帮你把这段代码改成用PHP后端处理日期格式化的版本~ 原来的前端Moment.js处理可以完全替换掉,直接在后端完成日期的解析和格式化,这样更稳定也不用依赖前端脚本。
完整修改后的代码
<?php // 先设置时区,避免日期处理出现偏差,可根据需求替换成对应时区 date_default_timezone_set('Asia/Shanghai'); $formattedDate = ''; // 判断是否是POST提交且存在日期参数 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['date'])) { // 使用DateTime类解析并格式化日期,比strtotime更可靠 $dateObj = new DateTime($_POST['date']); // 格式化为「日 月份全称 年份」,格式字符串对应规则见下文 $formattedDate = $dateObj->format('j F Y'); } ?> <form action="<?=$_SERVER['PHP_SELF'];?>" method="post"> <input type="date" name="date" id="date" required> <input type="submit" value="提交日期"> </form> <?php if (!empty($formattedDate)): ?> <h3>格式化后的结果:</h3> <p><?php echo $formattedDate; ?></p> <?php endif; ?>
关键修改点说明
- 移除前端冗余代码:删掉了原来的Moment.js引入和
dateformat()函数,因为现在完全由PHP后端处理日期,不需要前端介入。 - 时区设置:必须先设置时区(比如
Asia/Shanghai),否则PHP处理日期可能会出现时区偏移问题,你可以根据自己的需求替换成UTC、Europe/London等时区。 - 日期格式化规则:使用
format('j F Y')生成目标格式:j:不带前导零的日期数字(比如1、25)F:月份的英文全称(比如August、December)Y:4位完整年份(比如2019、2024)
- 表单优化:给日期输入框加了
required属性,确保用户必须填写日期再提交,同时移除了冗余的onsubmit事件绑定。
替代方案(用date()函数)
如果你习惯用date()函数,也可以这样处理(但DateTime类更推荐,处理边缘日期更稳定):
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['date'])) { $timestamp = strtotime($_POST['date']); $formattedDate = date('j F Y', $timestamp); }
内容的提问来源于stack exchange,提问作者Toony
相关产品推荐
相关产品推荐

