在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.pswp.cn/web/74839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74839.shtml
英文地址,請注明出處:http://en.pswp.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字節將緩沖區數據發憷 中斷處理函數