Layui如何利用util模块进行高级时间格式化(如:3分钟前)

老伟小哥_2399

老伟小哥_2399

2026-04-21

131人浏览

原创

util.timeago 返回 undefined 是因为 layui 官方 util 模块未提供该方法,仅含 formatdate 等基础函数;需自行实现相对时间计算逻辑或引入第三方库。

util.timeago 为什么返回 undefined

因为 util.timeago 不是 layui 内置方法,官方 laydate 和 util 模块里压根没这个函数。很多人搜“layui 时间前”直接抄到不存在的代码,结果调用报 typeerror: util.timeago is not a function。

真实情况是:Layui 2.x 的 util 只提供 util.toDateString、util.formatDate 这类基础格式化,不处理相对时间(如“5秒前”)。想实现“3分钟前”,得自己补逻辑,或引入轻量工具。

  • 别在 layui.use(['util'], callback) 里找 timeAgo —— 它不存在
  • 检查你用的是否是第三方魔改版 Layui(比如某些打包了 moment.js 的私有构建),但这种不可靠、不兼容升级
  • 原生方案只能靠 new Date() 手动算毫秒差,再分段判断

用 util.formatDate + 手动计算实现「X分钟前」

核心思路:拿到时间戳(或 Date 对象)→ 计算与当前时间的毫秒差 → 按阈值分段返回中文描述。这里用 util.formatDate 仅作兜底(当超过 24 小时,退化为日期字符串)。

示例代码(可直接用):

function timeAgo(timestamp) {
  const now = Date.now();
  const diff = now - timestamp;
  const sec = Math.floor(diff / 1000);
  const min = Math.floor(sec / 60);
  const hour = Math.floor(min / 60);
  const day = Math.floor(hour / 24);
<p>if (sec </p><div class="aritcle_card flexRow artxards">
											<div class="artcardd flexRow">
												<a class="aritcle_card_img" rel="nofollow" href="/xiazai/code/7535" title="深蓝色网站后台管理系统layui框架模板-AdminPro"><img
														src="https://img.php.cn/upload/webcode/000/287/557/6340dac18f876183.png" alt="深蓝色网站后台管理系统layui框架模板-AdminPro" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
												<div class="aritcle_card_info flexColumn">
													<a rel="nofollow" href="/xiazai/code/7535" title="深蓝色网站后台管理系统layui框架模板-AdminPro" class="overflowclass">深蓝色网站后台管理系统layui框架模板-AdminPro</a>
													<p class="overflowclass">一款深蓝色网站后台管理系统layui框架模板</p>
												</div>
												<a rel="nofollow" href="/xiazai/code/7535" title="深蓝色网站后台管理系统layui框架模板-AdminPro" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
												</a>
											</div>
										</div>
  • 注意传入的 timestamp 必须是毫秒级时间戳(13 位),不是秒级(10 位)。若后端给的是 1712345678,要先 ×1000
  • layui.util.formatDate 不支持时分秒兜底格式(如 MM-dd HH:mm),只认固定字符:y/M/d/H/m/s,且大小写敏感
  • 该函数不自动节流,高频调用(如列表滚动刷新)建议加防抖或缓存计算结果

和 moment.js 或 dayjs 混用的风险

有人会说:“直接引 dayjs,一行搞定 dayjs().from(timestamp)”。可行,但 Layui 项目里混用要注意:

  • Layui 默认用 AMD 加载,而 dayjs 是 ESM/CommonJS,需用 script 标签全局引入,或配合 layui.config({ paths: {...} }) 配路径,否则 define is not defined
  • 如果页面已用 laydate,它内部自带轻量日期逻辑,和 dayjs 同时 parse 同一字符串可能因时区/格式歧义出错(例如 "2023-05-01" 被解析成 UTC 零点还是本地零点)
  • 压缩后体积:Layui 全量约 300KB,dayjs + 中文包 ≈ 15KB —— 看似小,但对纯内网低带宽系统仍是负担

服务端返回相对时间更稳

前端算相对时间本质是“用客户端时间减服务端时间”,只要用户手机/电脑时间不准,结果就错(比如用户把系统时间调快 2 小时,“3分钟前”会变成“2小时3分钟后”)。

  • 推荐后端直接计算:PHP 用 Carbon::parse($time)->diffForHumans(),Node.js 用 dayjs().to(dayjs(time)),返回字符串如 "3分钟前"
  • 接口字段命名别用 created_at,改用 created_ago 或 time_desc,语义明确,前端直接插值渲染
  • 若必须前端算,至少加一层校验:和服务端 `/api/time` 接口比对时间偏移,动态修正 Date.now()

相对时间看着小,但涉及时区、精度、一致性,最容易在灰度发布时漏测——比如某台测试机系统时间慢了 5 分钟,所有“刚刚”都变成“5分钟前”,问题藏得深,修起来反而花半天。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2463

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5323

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6370

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5958

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

Python uv使用教程
Python uv使用教程

本专题汇总了 Python uv 使用教程与高效使用指南,从 uv 安装配置、常用命令到虚拟环境、依赖管理与项目打包,系统讲解如何用 uv 替代 pip 与 poetry,全面提升 Python 项目开发效率,助你快速上手这一现代化包管理工具,打造干净高效的 Python 工作流。

2026.10.15

0

15

剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

2026.10.14

0

15

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

2026.10.14

0

14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

2026.10.14

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习