在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');}});
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元测试原则之——不要模拟不属于你的类型

在单元测试中,不要模拟不属于你的类型(Don’t mock types you don’t own)是一个重要的原则。这是因为外部库或框架的类型(如第三方依赖)可能会在未来的版本中发生变化,而你的模拟可能无法反映这些变化,从而导致测试失效。 以下是一个基于Java Mockito 的示例,展示如何…

内网渗透(杂项集合) --- 中的多协议与漏洞利用技术(杂项知识点 重点) 持续更新

目录 1. NetBIOS 名称的网络协议在局域网中内网渗透中起到什么作用 2. 使用 UDP 端口耗尽技术强制所有 DNS 查找失败&#xff0c;这个技术如何应用在局域网内网渗透测试中 3. 在本地创建一个 HTTP 服务来伪造 WPAD 服务器 什么是 WPAD 服务器&#xff1f;这个服务器是干嘛的…

Git相关笔记1 - 本地文件上传远程仓库

Git相关笔记 目录 Git相关笔记Git上传相关文件第一步创建一个仓库&#xff1a;第二步本地创建空文件夹&#xff1a;第三步开始在gitbush上传文件&#xff1a;解决外网网络连接的问题&#xff1a;中文文件的编码问题&#xff1a;参考资料 Git上传相关文件 第一步创建一个仓库&a…

Cocos Creator 进行 Web 发布后,目录结构解析

在使用 Cocos Creator 进行 Web 发布后&#xff0c;生成的目录结构通常包含以下内容&#xff0c;下面为你详细介绍&#xff1a; 1. index.html 这是 Web 项目的入口 HTML 文件&#xff0c;它会加载所需的 JavaScript 文件和资源&#xff0c;从而启动游戏或应用程序。示例代码…

C++20的协程简介

C20 引入了协程&#xff08;Coroutines&#xff09;&#xff0c;这是一种特殊的函数&#xff0c;它可以暂停执行并在之后恢复&#xff0c;而不是像普通函数那样一旦返回就终止。协程的主要特点在于它能保留自身的执行状态&#xff0c;这让异步编程更加简洁和直观。以下是对 C20…

通过ansible+docker-compose快速安装一主两从redis+三sentinel

目录 示例主机列表 架构参考 文件内容 安装脚本 ansible变量&#xff0c;需修改 ansible配置文件和主机清单&#xff0c;需修改 运行方式 验证故障转移master 涉及redis镜像和完整的脚本文件 示例主机列表 架构参考 文件内容 安装脚本 #!/bin/bashset -e export pa…

Apache Arrow 使用

下述操作参考 Building Arrow C — Apache Arrow v20.0.0.dev267 安装依赖组件 sudo apt-get install \build-essential \ninja-build \cmake 下载源码 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 创建build目录并且进入 mkdir a…

玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…

MCP项目开发-一个简单的RAG示例

MCP项目开发-一个简单的RAG示例 前言 前言 客户端是基于官网的例子改的&#xff0c;模型改成了openai库连接仅仅使用基础的RAG流程作为一个演示&#xff0c;包含了以下步骤 query改写搜索&#xff1a;使用google serper重排序&#xff1a;使用硅基流动的api 大模型api也使用…

Tire树(字典树)

理论 上图是一棵Trie树&#xff0c;表示了关键字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”} 。从上图可以归纳出Trie树的基本性质&#xff1a; 根节点不包含字符&#xff0c;除根节点外的每一个子节点都包含一个字符。从根节点到某一个节点&…

厄瓜多尔主流收单方式:Pago Efectivo支付

PAGOEFECTIVO&#xff08;Pago Efectivo&#xff09;是秘鲁主流的在线支付方式&#xff0c;由El Comercio Group开发&#xff0c;主要为用户提供安全、便捷的在线支付解决方案&#xff0c;支持网银和现金支付&#xff0c;适用于没有信用卡或不愿透露银行信息的消费者。 Pago Ef…

【文献研究】含硼钢中BN表面偏析对可镀性的影响

《B 添加钢的溶融 Zn めっき性に及ぼす BN 表面析出の影響》由JFE公司田原大輔等人撰写。研究聚焦 B 添加钢在低露点退火时 BN 形成对镀锌性的影响&#xff0c;对汽车用高强度钢镀锌工艺优化意义重大。通过多组对比实验&#xff0c;结合多种分析手段&#xff0c;明确了相关因素…

语法: ptr=malloc(size)

MALLOC( ) 语法: ptrmalloc(size) 参数: size是一个整数,表示被分配的字节个数; 返回值: 如果允许的话,返回值是一个指向被分配存储器的指针;否则的话, 返回值是一个非指针; 功能: 该函数用来分配一定大小的空间给一个对象,其大小为size,但该空间的值为不确定值; 有…

JavaScript创建对象与构造函数

目录 创建对象 一、创建对象的 5 种核心方式 1. 对象字面量&#xff08;直接量&#xff09; 2. 使用 Object.create() 3. 工厂模式 4. 构造函数模式 5. ES6 class 语法&#xff08;语法糖&#xff09; 二、构造函数与 new 关键字 1. 构造函数的作用 2. 构造函数的特征…

AIDD-人工智能药物设计-深度学习助力提高儿童低级别胶质瘤复发风险预测的准确性

深度学习助力提高儿童低级别胶质瘤复发风险预测的准确性 儿童低级别胶质瘤&#xff08;pLGG&#xff09;是一种常见于儿童患者中的脑肿瘤&#xff0c;尽管大多数时候被认为是良性肿瘤&#xff0c;但是它们仍然可能导致相关症状和并发症的发生&#xff0c;包括但不限于头疼、癫…

redis的数据类型(1)

https://redis.io/docs/latest/develop/data-types/strings/ 社区版支持&#xff1a; String&#xff0c;字符串 Hash&#xff0c;key-value格式 List&#xff0c;根据插入顺序排序 Set&#xff0c;集合 Sorted set&#xff0c;有排序 Stream&#xff0c; Bitmap&#xff0c; …

Nacos配置中心使用

Nacos配置中心 Nacos除了可以做注册中心,&#x1f517;Nacos下载和注册中心教程,同样可以做配置管理来使用。 一、统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就显得十分的不方便&#xff0c;而且很容易出错。我们…

OpenCV轮廓检测全面解析:从基础到高级应用

一、概述 轮廓检测是计算机视觉中的基础技术&#xff0c;用于识别和提取图像中物体的边界。与边缘检测不同&#xff0c;轮廓检测更关注将边缘像素连接成有意义的整体&#xff0c;形成封闭的边界。 轮廓检测的核心价值 - 物体识别&#xff1a;通过轮廓可以识别图像中的独立物体…

Jenkins学习(B站教程)

文章目录 1.持续集成CI2.持续交付CD3.持续部署4.持续集成的操作流程5.jenkins简介6.后续安装部署&#xff0c;见视频 bilibili视频 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用…

ARM-UART

时钟选择PLCK,超时3ms自动发送&#xff0c;设置发送8位的缓冲区&#xff0c;且发送中断 设置触发深度&#xff0c;达到8字节将缓冲区数据发憷 中断处理函数