首页 APP开发 正文内容

使用 uni-app 开发项目,日期和时间如何格式化?

2023年08月17日 , 1,555

uni-app 官方有格式化时间和日期的组件,这篇文章展示两种方法来轻易实现这个需求。

功能需求描述

在开发项目时,往往需要对从后端查询到的时间进行格式化,查到的时间格式一般都是时间戳,一堆数字,这时候怎么转化成类似于 2023年8月15日 08:12:10 这样的格式?

在组件显示格式化后的日期

其实 uni-app 的官方拓展组件 uni-dateformat 就能实现这个需求,具体用法是:

<!-- 显示为中文时间格式 -->
<uni-dateformat :date="timestamp"></uni-dateformat>

date 属性可以接受时间戳、js 时间对象或者是时间字符串,非常灵活。而 format 属性则可以设置时间显示格式。

另外如果时间和现在很接近,默认会显示为“刚刚”、“5分钟前”等文字,这是比较友好的时间显示方式,如果只希望显示为时间,可以通过 threshold 属性:

<!-- 不显示刚刚/马上/xx分钟前,以及自定义年月日 -->
<uni-dateformat :date="timestamp" :threshold="[0,0]" format="yyyy年MM月dd日 hh:mm:ss"></uni-dateformat>

上面的代码例子是在 <template> 中使用组件的方式来格式化时间,这个组件很强大,还有很多种用法,可以去阅读官方组件文档。

在 js 中格式化时间日期

有时候我们需要在 js 中来格式化时间,其实也是可以的,这个用法在官方组件文档里没有说明,是我看了组件的源码发现的,就是在 js 引入 uni-dateformat 组件下的 data-format.js,这个模块导出了一个用来格式化时间的方法,如下图:

uni-dateformat 组件中暴露的方法
uni-dateformat 组件中暴露的方法

于是我可以在自己的业务代码中直接调用:

// 引入组件中的js
import { formatDate } from "@uni-mudules/uni-dataformat/data-format.js";

// 然后通过导出的方法使用
let date = formatDate(timestamp,"yyyy年MM月dd日 hh:mm:ss");
console.log(date); // 输出 2023年08月15日 08:12:10

所以不用自己重复写一个时间格式化的功能了,也不用去找其他时间处理 js 库,就用这个方法就可以了。