vue3时间戳格式转换

项目中遇到后端返回值为秒的值,例如(102135464)秒,需要转化成yyyy-m-d格式,但是在vue3项目中不支持filters过滤器,需要使用到计算属性computed代替.

1.项目目录中,创建一个名为utils文件夹下面的filter.js文件,定义函数formatDate,代码如下

export function formatDate(date, fmt) {
	if (/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length))
	}
	let o = {
		y: date.getFullYear(),
		m: date.getMonth() + 1,
		d: date.getDate(),
		h: date.getHours(),
		i: date.getMinutes(),
		s: date.getSeconds(),
		a: date.getDay()
	}
	if(o.m < 10) {
	  o.m = '0' + o.m
	}
    if(o.i < 10) {
	  o.i = o.i + '0'
	}
	if(o.s < 10) {
	   o.s = o.s + '0'
	}
	// s
	for (let k in o) {
		if (new RegExp(`(${k})`).test(fmt)) {
			let str = o[k] + ""
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
		}
	}
	return fmt
}

2.引用代码,回到项目中需要使用时间戳的vue3文件中,引入刚才创建的filter.js,才能够使用,代码如下

import { formatDate } from "../utils/filter.js";

3.在vue3文件中创建一个方法名为changeFormdate,配合刚才引入filter.js文件中的formatDate函数方法,代码如下

const changeFormdate = computed(() => {
  return (time) => {
    let date = new Date(time);
    return formatDate(date, "yyyy-m-d");
  };
});

4.直接使用插值语法{{changeFormdate(string)}}方法使用,我这里的videoList.addTime,就是后端返回的值,

 <span>发布时间:{{ changeFormdate(videoList.addTime) }}</span>

大功告成,再看项目的时候已经从例如(102135464)秒,转换成了例如2022.6.27这样的格式了

### Vue3 中将时间戳转换为可读日期的 JavaScript 方法 在 Vue3 项目中,可以创建一个通用的时间戳转日期的方法,并将其封装到混合、插件或组合式 API 的工具函数中以便于重用。下面展示一种通过定义辅助函数并利用 `Intl.DateTimeFormat` 对象来进行格式化的方式。 #### 使用自定义方法进行时间戳转换 为了处理不同长度的时间戳(通常是10位秒级或13位毫秒级),先判断传入参数的形式再做相应调整: ```javascript function formatTimestamp(timestamp) { // 判断是否为有效数值型时间戳 if (isNaN(Number(timestamp))) throw new Error(&#39;Invalid timestamp&#39;); const ts = Number(timestamp); // 如果是10位数,则乘以1000变为毫秒单位;否则假定已经是毫秒级别 const adjustedTs = String(ts).length === 10 ? ts * 1000 : ts; // 创建新的Date实例用于后续操作 const dateObj = new Date(adjustedTs); // 定义所需的语言环境和地区设置 const localeOptions = { year: &#39;numeric&#39;, month: &#39;2-digit&#39;, day: &#39;2-digit&#39;, hour: &#39;2-digit&#39;, minute:&#39;2-digit&#39;, second:&#39;2-digit&#39; }; // 返回格式化后的字符串表示形式 return new Intl.DateTimeFormat(&#39;zh-CN&#39;, localeOptions).format(dateObj)[^1]; } ``` 此代码片段展示了如何安全地接收各种可能的时间戳输入,并返回符合中国地区习惯的日历表达方式。注意这里选择了中文语言环境 `&#39;zh-CN&#39;` 和特定选项集来控制输出样式[^3]。 对于希望在整个应用程序范围内使用的场景,在项目的入口文件如 `main.js` 或者专门建立的帮助类里注册该方法是一个不错的选择。这样做的好处是可以让任何组件都能方便调用而无需重复编写相同的逻辑。 此外,也可以考虑把这一过程集成至计算属性内,从而允许视图层自动响应数据变化触发更新显示效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值