最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中的Moment.js與Day.js時(shí)間處理庫(kù)用法詳解

 更新時(shí)間:2025年07月24日 11:19:53   作者:青燈文案  
Moment.js是一個(gè)在JavaScript開(kāi)發(fā)中廣泛使用的日期處理庫(kù),它的出現(xiàn)極大地方便了開(kāi)發(fā)者在處理日期和時(shí)間上的需求,這篇文章主要介紹了JavaScript中的Moment.js與Day.js時(shí)間處理庫(kù)用法的相關(guān)資料,需要的朋友可以參考下

在前端開(kāi)發(fā)中,處理日期和時(shí)間是常見(jiàn)需求,但原生 JavaScript 的 Date 對(duì)象功能有限且 API 不夠友好。Moment.jsDay.js 是兩個(gè)流行的時(shí)間處理庫(kù),它們提供了簡(jiǎn)潔易用的 API 來(lái)簡(jiǎn)化日期操作。

1、Moment.js

Moment.js 是一個(gè)歷史悠久的時(shí)間處理庫(kù),提供了全面的日期格式化、解析、計(jì)算和國(guó)際化支持。

優(yōu)點(diǎn):

  • 支持日期計(jì)算、格式化、時(shí)區(qū)處理等幾乎所有場(chǎng)景。
  • 是通過(guò)鏈?zhǔn)秸{(diào)用實(shí)現(xiàn)復(fù)雜操作。
  • 完善的國(guó)際化和本地化支持
  • 社區(qū)成熟,文檔完善,生態(tài)豐富。

缺點(diǎn):

  • 體積較大:約 67KBgzip 后約 20KB+,可能影響應(yīng)用加載速度。
  • 可變對(duì)象設(shè)計(jì),容易產(chǎn)生引用問(wèn)題,例如在同一個(gè)方法多次調(diào)用 moment 方法,會(huì)產(chǎn)生數(shù)據(jù)異常。
  • 性能相對(duì)較差。
  • 官方停止維護(hù),進(jìn)入維護(hù)模式。
  • Tree-shaking 支持不佳。

2、常見(jiàn)用法

// 引入 Moment.js
import moment from 'moment';

// 1. 獲取當(dāng)前時(shí)間
const now = moment();

// 2. 格式化日期
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2023-05-10 14:30:00

// 3. 日期計(jì)算
const tomorrow = now.add(1, 'days');
const lastWeek = now.subtract(1, 'weeks');

// 4. 相對(duì)時(shí)間
console.log(moment('2023-01-01').fromNow()); // 4個(gè)月前

// 5. 解析字符串為日期
const date = moment('2023-05-10', 'YYYY-MM-DD');

// 6. 時(shí)區(qū)處理(需額外加載 moment-timezone)
const laTime = moment.tz('2023-05-10 12:00', 'America/Los_Angeles');

3、Day.js

Day.js 是一個(gè)輕量級(jí)的時(shí)間處理庫(kù),設(shè)計(jì)靈感來(lái)自 Moment.js,但體積更小,約 2KB ,性能更高。它的 API 與 Moment.js 兼容,適合現(xiàn)代前端項(xiàng)目,新項(xiàng)目推薦使用。

優(yōu)點(diǎn):

  • 核心體積僅 2KB,適合對(duì)包大小敏感的項(xiàng)目。
  • 不可變對(duì)象設(shè)計(jì),避免了引用問(wèn)題,所有操作返回新實(shí)例,避免副作用。
  • API 兼容 Moment,幾乎完全繼承 Moment 的 API,遷移成本低。
  • 支持 Tree-shaking ,按需加載。
  • 性能優(yōu)秀,現(xiàn)代化設(shè)計(jì),活躍維護(hù),持續(xù)更新。
  • 按需加載插件,避免引入無(wú)用代碼。

缺點(diǎn):

  • 功能相對(duì) Moment 較少,需要使用插件引用。
  • 國(guó)際化需要額外支持。
  • 社區(qū)相對(duì)較新。

4、常見(jiàn)用法

// 引入 Day.js
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc'; // 按需加載插件

// 使用插件
dayjs.extend(utc);

// 1. 獲取當(dāng)前時(shí)間
const now = dayjs();

// 2. 格式化日期
console.log(now.format('YYYY-MM-DD HH:mm:ss')); // 2023-05-10 14:30:00

// 3. 日期計(jì)算
const tomorrow = now.add(1, 'day');
const lastWeek = now.subtract(1, 'week');

// 4. 相對(duì)時(shí)間(需加載 relativeTime 插件)
console.log(dayjs('2023-01-01').fromNow()); // 4個(gè)月前

// 5. 解析字符串為日期
const date = dayjs('2023-05-10', 'YYYY-MM-DD');

// 6. 時(shí)區(qū)處理(需加載 utc 和 timezone 插件)
const laTime = dayjs.utc('2023-05-10 12:00').tz('America/Los_Angeles');

5、JS 原生 API

如果項(xiàng)目對(duì)體積要求極高且僅需簡(jiǎn)單功能,可使用原生 API。

優(yōu)點(diǎn):無(wú)需額外依賴,瀏覽器原生支持,性能最好,占用內(nèi)存少,所有JS環(huán)境都支持。

缺點(diǎn):

  • API 設(shè)計(jì)不夠直觀,月份從 0 開(kāi)始計(jì)算。
  • 時(shí)區(qū)處理復(fù)雜,并且容易出錯(cuò),日期計(jì)算和格式化功能有限。
  • 可變對(duì)象,容易產(chǎn)生副作用。

6、常見(jiàn)方法

// 1. 格式化日期
const now = new Date();
console.log(`${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`);

// 2. 日期計(jì)算
const tomorrow = new Date(now);
tomorrow.setDate(now.getDate() + 1);

// 3. 相對(duì)時(shí)間(簡(jiǎn)單實(shí)現(xiàn))
const getRelativeTime = (date) => {
  const diff = (new Date() - date) / 1000;
  if (diff < 60) return `${Math.floor(diff)}秒前`;
  if (diff < 3600) return `${Math.floor(diff / 60)}分鐘前`;
  return `${Math.floor(diff / 3600)}小時(shí)前`;
};

7、對(duì)比與選擇建議

特性原生APIMoment.jsDay.js
體積原生~20KB+(gzip 后)~2KB(gzip 后)
兼容性跨瀏覽器有兼容問(wèn)題支持 IE8+現(xiàn)代瀏覽器(IE 需 polyfill)
API 設(shè)計(jì)可變數(shù)據(jù)(可能有副作用)可變數(shù)據(jù)(可能有副作用)不可變數(shù)據(jù)(更安全)
生態(tài)使用比較復(fù)雜插件豐富,社區(qū)成熟插件逐漸完善
適用場(chǎng)景對(duì)日期要求不高的場(chǎng)景復(fù)雜項(xiàng)目、需兼容舊瀏覽器對(duì)體積敏感的項(xiàng)目

選擇建議:

  • 新項(xiàng)目:優(yōu)先使用 Day.js ,體積小且性能高。
  • 遺留項(xiàng)目:若已使用 Moment.js 且功能穩(wěn)定,可繼續(xù)使用;若需優(yōu)化體積,可考慮遷移到 Day.js。
  • 國(guó)際化需求:兩者均支持,但 Day.js 的國(guó)際化文件需單獨(dú)引入。

總結(jié):

  • Moment.js 適合功能全面、兼容性要求高的項(xiàng)目。
  • Day.js 適合追求極致性能和體積的現(xiàn)代項(xiàng)目。
  • 原生 API 適合簡(jiǎn)單場(chǎng)景,避免引入額外依賴。

到此這篇關(guān)于JavaScript中的Moment.js與Day.js時(shí)間處理庫(kù)用法的文章就介紹到這了,更多相關(guān)JS Moment.js與Day.js時(shí)間處理庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript forEach 方法跳出循環(huán)的操作方法

    JavaScript forEach 方法跳出循環(huán)的操作方法

    這篇文章主要介紹了JavaScript forEach 方法跳出循環(huán)的操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • 使用classList來(lái)實(shí)現(xiàn)兩個(gè)按鈕樣式的切換方法

    使用classList來(lái)實(shí)現(xiàn)兩個(gè)按鈕樣式的切換方法

    下面小編就為大家分享一篇使用classList來(lái)實(shí)現(xiàn)兩個(gè)按鈕樣式的切換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • javascript的this關(guān)鍵字詳解

    javascript的this關(guān)鍵字詳解

    這篇文章主要介紹了javascript的this關(guān)鍵字的用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 插件:檢測(cè)javascript的內(nèi)存泄漏

    插件:檢測(cè)javascript的內(nèi)存泄漏

    插件:檢測(cè)javascript的內(nèi)存泄漏...
    2007-03-03
  • JavaScript中對(duì)象的不同創(chuàng)建方法

    JavaScript中對(duì)象的不同創(chuàng)建方法

    js對(duì)象與一般的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言有所不同的。js中的對(duì)象是基本原型的。下面給大家介紹js中對(duì)象的不同創(chuàng)建方法,非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • 通過(guò)掃小程序碼實(shí)現(xiàn)網(wǎng)站登陸功能

    通過(guò)掃小程序碼實(shí)現(xiàn)網(wǎng)站登陸功能

    這篇文章主要介紹了通過(guò)掃小程序碼實(shí)現(xiàn)網(wǎng)站登陸功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作示例

    JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作示例

    這篇文章主要介紹了JS localStorage存儲(chǔ)對(duì)象,sessionStorage存儲(chǔ)數(shù)組對(duì)象操作,結(jié)合實(shí)例形式詳細(xì)分析了JS使用localStorage存儲(chǔ)對(duì)象以及sessionStorage存儲(chǔ)數(shù)組對(duì)象相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • JS流式模式輸出函數(shù)模式使用詳解

    JS流式模式輸出函數(shù)模式使用詳解

    文章介紹了傳統(tǒng)接口模式與AI項(xiàng)目需求不符的問(wèn)題,提出了流式模式和回調(diào)函數(shù)模式來(lái)解決,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • bootstrap fileinput 上傳插件的基礎(chǔ)使用

    bootstrap fileinput 上傳插件的基礎(chǔ)使用

    這篇文章主要介紹了bootstrap fileinput 上傳插件基礎(chǔ)使用,重點(diǎn)是把界面做得更加友好,更好的增加用戶體驗(yàn)。對(duì)bootstrap fileinput知識(shí)感興趣的朋友通過(guò)本文一起學(xué)習(xí)吧
    2017-02-02
  • 微信小程序使用checkbox顯示多項(xiàng)選擇框功能【附源碼下載】

    微信小程序使用checkbox顯示多項(xiàng)選擇框功能【附源碼下載】

    這篇文章主要介紹了微信小程序使用checkbox顯示多項(xiàng)選擇框功能,涉及相關(guān)事件綁定與元素遍歷操作技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

楚雄市| 清苑县| 新郑市| 普宁市| 岚皋县| 丽江市| 临汾市| 卓资县| 顺义区| 灵石县| 吴堡县| 乌鲁木齐县| 东兴市| 远安县| 元朗区| 文山县| 资中县| 广饶县| 青阳县| 江达县| 双流县| 松阳县| 永春县| 错那县| 霸州市| 柳林县| 承德县| 新晃| 县级市| 富裕县| 娱乐| 若羌县| 铜川市| 华阴市| 耒阳市| 盱眙县| 融水| 天台县| 绥滨县| 北辰区| 自治县|