
在Web开发中,从数据库检索到的日期通常以标准化的格式(如MySQL的YYYY-MM-DD或YYYY-MM-DD HH:MM:SS)存储。然而,为了提供更好的用户体验,这些日期往往需要在前端以更易读、更符合本地习惯的格式显示,例如“27 Jun 2022”。本文将介绍如何在PHP后端和JavaScript前端实现这种日期格式转换,并提供关于数据库日期存储的最佳实践。
PHP提供了内置函数来处理日期和时间,可以在服务器端将从MySQL获取的日期字符串转换为所需的格式。
strtotime() 函数可以将任何英文文本的日期或时间描述解析为Unix时间戳。然后,date() 函数可以根据指定格式将Unix时间戳格式化为可读的日期字符串。
示例代码:
立即学习“PHP免费学习笔记(深入)”;
假设您的$checkSqlRow["CREATED_AT"]包含从数据库获取的日期字符串,例如"2022-06-27"。
<?php
// 假设 $checkSqlRow["CREATED_AT"] 的值为 "2022-06-27"
$dateFromDb = $checkSqlRow["CREATED_AT"];
// 将日期字符串转换为Unix时间戳
$timestamp = strtotime($dateFromDb);
// 使用 date() 函数格式化时间戳为 "dd mmm yyyy" 格式
// 'd' 代表月份中的日期 (01-31)
// 'M' 代表月份的简写 (Jan-Dec)
// 'Y' 代表四位数的年份
$formattedDate = date('d M Y', $timestamp);
// 在HTML表格中输出格式化后的日期
echo '<td>' . $formattedDate . '</td>';
?>输出结果:
<td>27 Jun 2022</td>
将日期格式化任务转移到客户端浏览器是一个更现代且推荐的做法。这不仅减轻了服务器的负担,还提供了更灵活的本地化和动态更新能力。
Moment.js是一个非常流行的JavaScript日期处理库,它提供了强大的解析、验证、操作和格式化日期的功能。
步骤:
引入Moment.js库: 在您的HTML文件的zuojiankuohaophpcnhead>或<body>标签结束前引入Moment.js。您可以从CDN加载,也可以通过npm安装后自行打包。
<!-- 从CDN引入Moment.js --> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
HTML准备: 在PHP生成HTML时,输出原始的日期字符串,并可以将其存储在HTML元素的data-属性中,以便JavaScript轻松访问。
<?php
// 假设 $checkSqlRow["CREATED_AT"] 的值为 "2022-06-27"
$dateFromDb = $checkSqlRow["CREATED_AT"];
?>
<!-- 将原始日期存储在data-date属性中 -->
<td class="date-display" data-date="<?php echo $dateFromDb; ?>">
<!-- 这里可以先放一个占位符或者原始日期,JavaScript会替换它 -->
<?php echo $dateFromDb; ?>
</td>JavaScript格式化代码: 使用JavaScript遍历所有需要格式化的日期元素,并使用Moment.js进行格式化。
document.addEventListener('DOMContentLoaded', function() {
// 获取所有带有 'date-display' 类名的单元格
const dateCells = document.querySelectorAll('.date-display');
dateCells.forEach(function(cell) {
// 从 data-date 属性获取原始日期字符串
const rawDate = cell.dataset.date;
// 使用 Moment.js 解析日期并格式化
// 'DD' 代表月份中的日期 (01-31)
// 'MMM' 代表月份的简写 (Jan-Dec)
// 'YYYY' 代表四位数的年份
const formattedDate = moment(rawDate).format('DD MMM YYYY');
// 更新单元格的文本内容
cell.textContent = formattedDate;
});
});注意事项:
无论您选择服务器端还是客户端格式化,数据库中日期时间的存储方式都至关重要。推荐始终存储完整的DATETIME类型,而不是仅存储DATE。
MySQL提供了CURRENT_TIMESTAMP作为默认值和更新时的自动更新值,这对于记录创建和修改时间非常方便。
SQL建表示例:
CREATE TABLE exampleSchema (
game_id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) DEFAULT '' NOT NULL,
code VARCHAR(255) DEFAULT '' NOT NULL,
created DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
) ENGINE = InnoDB;这种设置确保了时间戳的准确性和自动化,极大地简化了开发工作。
通过结合数据库的最佳实践和前端的灵活处理,您可以有效地管理和显示日期信息,从而提升应用的健壮性和用户体验。
以上就是如何在PHP与MySQL中将日期格式化为 'dd mmm yyyy' 并优化显示的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号