JavaScript中將YYYYMMDD轉(zhuǎn)換為日期的三種方法
在 JavaScript 中,將 "20250806"(格式為 YYYYMMDD)轉(zhuǎn)換為日期對(duì)象,可以通過(guò)以下步驟實(shí)現(xiàn):
方法 1:手動(dòng)拆分字符串
const dateStr = "20250806"; // 拆分字符串獲取年、月、日(注意:月份從 0 開始計(jì)數(shù)) const year = parseInt(dateStr.substring(0, 4)); const month = parseInt(dateStr.substring(4, 6)) - 1; // 月份減 1 const day = parseInt(dateStr.substring(6, 8)); // 創(chuàng)建 Date 對(duì)象 const date = new Date(year, month, day); console.log(date); // 輸出: Wed Aug 06 2025 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
方法 2:使用正則表達(dá)式
const dateStr = "20250806";
// 正則匹配提取年、月、日
const [, year, month, day] = dateStr.match(/^(\d{4})(\d{2})(\d{2})$/);
// 創(chuàng)建 Date 對(duì)象(月份需減 1)
const date = new Date(year, month - 1, day);
console.log(date); // 同上方法 3:使用 ISO 8601 格式(推薦)
const dateStr = "20250806";
// 轉(zhuǎn)換為 YYYY-MM-DD 格式(ISO 8601)
const isoStr = `${dateStr.slice(0, 4)}-${dateStr.slice(4, 6)}-${dateStr.slice(6, 8)}`;
// 直接通過(guò)字符串創(chuàng)建 Date 對(duì)象
const date = new Date(isoStr);
console.log(date); // 同上(注意時(shí)區(qū)差異可能影響輸出)關(guān)鍵說(shuō)明:
月份從 0 開始
JavaScript 的 Date 構(gòu)造函數(shù)中,月份是 0(1月)到 11(12月),所以需要將原始字符串中的月份減 1。
時(shí)區(qū)問(wèn)題
const utcDate = new Date(Date.UTC(year, month, day));
方法 1 和 2 創(chuàng)建的日期基于 本地時(shí)區(qū)(如 GMT+0800)。
方法 3(ISO 格式)創(chuàng)建的日期可能被解析為 UTC 時(shí)間,再轉(zhuǎn)換為本地時(shí)區(qū)(不同瀏覽器可能有差異)。
如果需要 UTC 時(shí)間,請(qǐng)用:
驗(yàn)證有效性
建議檢查生成的日期是否有效:
if (isNaN(date.getTime())) {
console.error("無(wú)效日期");
}最終選擇:
推薦方法 3(ISO 8601 格式),代碼簡(jiǎn)潔且符合標(biāo)準(zhǔn)。
如果需兼容舊瀏覽器,可選方法 1(手動(dòng)拆分)。
export const formatDate = (date: string | Date | number, format = "YYYY-MM-DD HH:mm:ss") => {
let resultTime = "";
try {
// 支持 ISO 8601 格式,日期格式為 YYYYMMDD,如:20250806
if ((typeof date === "string" && date.length === 8) || (typeof date === "number" && date.toString().length === 8)) {
if (typeof date === "number") {
date = date.toString();
}
date = `${date.slice(0, 4)}-${date.slice(4, 6)}-${date.slice(6, 8)}`;
}
resultTime = dayjs(date).format(format);
} catch (error) {}
// 處理無(wú)效日期
return resultTime === "Invalid Date" ? "" : resultTime;
};到此這篇關(guān)于JavaScript中將YYYYMMDD轉(zhuǎn)換為日期的三種方法的文章就介紹到這了,更多相關(guān)JavaScript YYYYMMDD轉(zhuǎn)日期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Bootstrap typeahead插件實(shí)現(xiàn)搜索框自動(dòng)補(bǔ)全的方法
這篇文章主要介紹了使用Bootstrap typeahead插件實(shí)現(xiàn)搜索框自動(dòng)補(bǔ)全的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
JavaScript實(shí)現(xiàn)省市聯(lián)動(dòng)過(guò)程中bug的解決方法
這篇文章主要為大家詳細(xì)介紹了解決JavaScript實(shí)現(xiàn)省市聯(lián)動(dòng)過(guò)程中的bug,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
深入理解javascript學(xué)習(xí)筆記(一) 編寫高質(zhì)量代碼
編寫高質(zhì)量JavaScript的一些要素,例如避免全局變量,使用單變量聲明,在循環(huán)中預(yù)緩存length(長(zhǎng)度),遵循代碼閱讀,以及更多2012-08-08
JavaScript對(duì)象擴(kuò)展方法的用法詳解
JavaScript對(duì)象中的可擴(kuò)展性指的是:是否可以給對(duì)象添加新屬性。所有的內(nèi)置對(duì)象和自定義對(duì)象顯示的都是可擴(kuò)展的,對(duì)于宿主對(duì)象,則由JavaScript引擎決定2022-11-11
JS格式化數(shù)字金額用逗號(hào)隔開保留兩位小數(shù)
JS格式化數(shù)字金額只留兩位小數(shù)。寫了個(gè)格式化函數(shù)??梢钥刂菩?shù)位數(shù),自動(dòng)四舍五入,感興趣的朋友可以了解下2013-10-10

