You need to enable JavaScript to run this app. 如何在EJS中实现专门的时间格式化操作?
优惠活动
大模型
产品
解决方案
定价
更多

如何在EJS中实现专门的时间格式化操作?

EJS中纯时间类型调用getHours/getMinutes无效的解决方案

问题根因

从数据库获取的纯时间值不属于JavaScript Date 实例类型,通常为 HH:mm:ss 格式的字符串,无法直接调用Date原型上的getHours、getMinutes方法。

可用解决方案

方案1:EJS内转换为Date对象后调用方法

给纯时间拼接一个无影响的固定日期前缀,构造合法Date实例即可正常调用相关方法:

<% 
// 假设从后端传入的纯时间字段为 dbTime,格式为 HH:mm:ss
const formattedDate = new Date(`1970-01-01 ${dbTime}`)
const hours = formattedDate.getHours()
const minutes = formattedDate.getMinutes()
%>
<!-- 格式化输出示例 -->
<span>当前时间:<%= hours %>点<%= minutes %>分</span>

方案2:直接切割字符串(更适合固定格式的纯时间)

如果纯时间格式固定为冒号分隔的时分结构,不需要转Date,直接拆分字符串取值即可,性能更高:

<% 
// 按冒号拆分后转数字,直接取前两位的时分
const [hours, minutes] = dbTime.split(':').map(Number)
%>

方案3:后端返回前预处理(可选)

如果使用Node.js作为后端,可在返回数据前就将纯时间转换为可直接读取的时分格式,无需EJS端二次处理:

// Node.js 后端处理示例
const dbTime = row.time // 从数据库拿到的纯时间字符串
const [hours, minutes] = dbTime.split(':').map(Number)
// 把处理好的时分传给EJS模板
res.render('page', { hours, minutes })

注意事项

如果数据库返回的时间带毫秒后缀(如 14:25:30.456),拆分后只取前两位元素即可,不会影响时分取值。

内容的提问来源于stack exchange,提问作者Dev Dhawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:27:03