LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

用dayjs解析時間戳,我被提了bug

admin
2025年6月8日 22:24 本文熱度 273

引言

前幾天開發中突然接到測試提的一個 Bug,說我的時間組件顯示異常。

我很詫異,這里初始化數據是后端返回的,我什么也沒改,這 bug 提給我干啥。我去問后端:“這數據是不是有問題?”。后端答:“沒問題啊,我們一直都是這么返回的時間戳,其他人用也沒報錯。”

于是,對比生產環境數據,我終于找到了問題根源:「后端時間戳的類型,從 Number 靜悄悄地變成了 String。」

Bug 原因

問題的原因,肯定就出現在時間數據解析上了,代碼中,我統一用的 dayjs 做的時間解析。

如圖,對時間戳的解析我都是這么寫的

const time = dayjs(res.endTime).format('YYYY-MM-DD HH:mm:ss')

于是,我分別試了兩種數據類型的解析方式:

  • 字符型
dayjs('175008959900').format('YYYY-MM-DD hh:mm:ss') // 1975-07-19 01:35:59
  • 數值型
dayjs(Number('175008959900')).format('YYYY-MM-DD HH:mm:ss') // 2025-07-17 06:59:59

看來,問題原因顯而易見了:

由于后端返回的是「字符串類型」?的?'175008959900',dayjs()?在處理字符串時,會嘗試按 “常見的日期字符串格式” 進行解析(如?YYYY-MM-DD、YYYYMMDD?等),「并不會自動識別為時間戳」。所以它「不會把這個字符串當作毫秒時間戳來解析」,而是直接失敗(解析成無效日期),但 dayjs 會退化為 Unix epoch(1970 年)或給出錯誤結果,最終導致返回的是錯誤的時間。

如何避免此類問題

同 dayjs 一樣,原生的?new Date()?在解析時間戳時也存在類似的問題,因此,不管是?Date?還是?dayjs,一律對后端返回的時間戳?Number(input)?兜底處理,永遠不要信任它傳的是數字還是字符串:

const ts = Number(res.endTime);
const date = new Date(ts);

思考

其實出現這個問題,除了后端更改時間戳類型,也在于我沒有充分理解 “時間戳” 的含義。我一直以為時間戳就是一段字符或一段數字,因此,從來沒有想過做任何兜底處理。那么,什么是時間戳?

「時間戳(Timestamp)」?是一種用來表示時間的數字,通常表示從某個 “起點時刻” 到某個指定時間之間「所經過的時間長度」。這個 “起點” 大多數情況下是?「1970 年 1 月 1 日 00:00:00 UTC(Unix 紀元)」?。

「常見時間戳類型:」

類型
單位
示例值
說明
Unix 時間戳(秒)
1750089599
常見于后端接口、數據庫存儲
毫秒時間戳
毫秒
1750089599000
JavaScript 常用,Date.now()

「時間戳的意義:」

  • 它是一個?「絕對時間的數字化表示」,可以跨語言、跨平臺統一理解;
  • 更容易做計算:兩個時間戳相減就能得到毫秒差值(時間間隔);
  • 更緊湊:比如比字符串?"2025-07-17 06:59:59"?更短,處理性能更高。

「在 JavaScript 中的使用:」

console.log(Date.now()); // 比如:1714729530000

// 將時間戳轉為日期
console.log(new Date(1750089599000)); // Thu Jul 17 2025 06:59:59 GMT+0800


關注更多AI編程資訊請去AI Coding專區:https://juejin.cn/aicoding

閱讀原文:原文鏈接


該文章在 2025/6/9 9:58:32 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
制服丝袜在线观看亚洲不卡 | 亚洲色香蕉一区二区三区 | 天天看国产在线手机观看 | 在线国产亚洲91 | 天天综合亚洲色在线精品 | 亚洲AV永久精品一区二区在线 |