欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 在Vue3中格式化后端返回的Java Date类型数据为指定格式

在Vue3中格式化后端返回的Java Date类型数据为指定格式

2025/4/6 11:55:00 来源:https://blog.csdn.net/z2637305611/article/details/146981147  浏览:    关键词:在Vue3中格式化后端返回的Java Date类型数据为指定格式

在前端Vue3项目中,格式化后端返回的java.util.Date类型时间到yyyy-MM-dd HH:mm:ss格式,有几种常用方法:

方法一:使用JavaScript内置方法

<JAVASCRIPT>

// 假设后端返回的数据结构为 { createTime: '2023-05-15T08:30:00.000+00:00' }function formatDate(date) {const d = new Date(date);const year = d.getFullYear();const month = String(d.getMonth() + 1).padStart(2, '0');const day = String(d.getDate()).padStart(2, '0');const hours = String(d.getHours()).padStart(2, '0');const minutes = String(d.getMinutes()).padStart(2, '0');const seconds = String(d.getSeconds()).padStart(2, '0');return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}// 使用示例
const formattedDate = formatDate(backendData.createTime);

方法二:使用day.js(推荐)

1. 首先安装day.js

<BASH>

npm install dayjs

2. 创建实用函数

<JAVASCRIPT>

// utils/dateUtils.js
import dayjs from 'dayjs';export function formatDateTime(date) {return dayjs(date).format('YYYY-MM-DD HH:mm:ss');
}

3. 在组件中使用

<VUE>

<template><div><p>创建时间: {{ formatDateTime(item.createTime) }}</p></div>
</template><script setup>
import { formatDateTime } from '@/utils/dateUtils';const item = {createTime: '2023-05-15T08:30:00.000+00:00' // 假设这是后端返回的数据
};
</script>

方法三:使用Vue filter(虽然Vue3中不太推荐,但兼容Vue2)

<JAVASCRIPT>

// main.js
import { createApp } from 'vue';
import dayjs from 'dayjs';const app = createApp(App);app.config.globalProperties.$filters = {formatDate(date) {return dayjs(date).format('YYYY-MM-DD HH:mm:ss');}
};app.mount('#app');

在模板中使用:

<VUE>

<template><span>{{ $filters.formatDate(item.createTime) }}</span>
</template>

方法四:使用自定义hook(Composition API方式)

<JAVASCRIPT>

// hooks/useDateFormat.js
import { computed } from 'vue';
import dayjs from 'dayjs';export function useDateFormat() {const formatDate = (date) => {return computed(() => dayjs(date).format('YYYY-MM-DD HH:mm:ss')).value;};return { formatDate };
}

在组件中使用:

<VUE>

<script setup>
import { useDateFormat } from '@/hooks/useDateFormat';const { formatDate } = useDateFormat();const backendData = {createTime: '2023-05-15T08:30:00.000+00:00'
};
</script><template><p>格式化后的时间: {{ formatDate(backendData.createTime) }}</p>
</template>

处理时区问题

如果后端返回的时间字符串包含时区信息(如2023-05-15T08:30:00.000+00:00),需要特别注意时区转换:

<JAVASCRIPT>

// 使用dayjs处理时区
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';dayjs.extend(utc);
dayjs.extend(timezone);function formatDateWithTimezone(date) {return dayjs.utc(date).tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss');
}

最佳实践建议

  1. 推荐使用day.js - 它轻量且功能强大,相比moment.js体积更小
  2. 封装为工具函数 - 将日期格式化逻辑封装,便于统一管理和修改
  3. 在接口层处理 - 可以在axios响应拦截器中统一格式化日期字段
  4. 考虑时区 - 确保前端显示的时区与用户期望的一致(通常是本地时区或东八区)

响应拦截器统一处理示例

<JAVASCRIPT>

// src/utils/request.js
import dayjs from 'dayjs';const service = axios.create({// ...其他配置
});service.interceptors.response.use(response => {if (response.data && response.data.data) {formatDates(response.data.data);}return response;
});function formatDates(obj) {if (!obj || typeof obj !== 'object') return;Object.keys(obj).forEach(key => {// 假设所有包含"time"或"date"的字段都是日期字段if (/time|date|Time|Date/.test(key) && obj[key]) {obj[key] = dayjs(obj[key]).format('YYYY-MM-DD HH:mm:ss');}});
}

这样处理后,所有接口返回的日期字段会自动格式化为指定格式,无需在每个组件中单独处理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词