<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [轉(zhuǎn)]Day.js 使用詳解與實(shí)戰(zhàn)筆記

      原文地址:Day.js 使用詳解與實(shí)戰(zhàn)筆記 - 知乎

      在現(xiàn)代前端開發(fā)中,日期和時間的處理是一個常見但容易出錯的任務(wù)。雖然 JavaScript 內(nèi)置了 Date 對象,但它功能有限且用法不夠直觀。Day.js 是一個輕量級(2KB 大小)、快速且與 Moment.js API 完全兼容的日期處理庫,深受開發(fā)者喜愛。

      本文將全面介紹 Day.js 的功能,涵蓋基礎(chǔ)用法、插件擴(kuò)展、實(shí)戰(zhàn)場景和最佳實(shí)踐。

      1. Day.js 的安裝

      1.1 使用 npm 或 yarn 安裝

      在 Node.js 項(xiàng)目中可以通過以下方式安裝:

      npm install dayjs
      # 或者
      yarn add dayjs

      1.2 在瀏覽器中使用

      可以通過 CDN 鏈接直接引入:

      <script src="https://cdn.jsdelivr.net/npm/dayjs"></script>
      <script>
        console.log(dayjs().format());
      </script>

      1.3 引入模塊

      安裝后在項(xiàng)目中可以通過以下方式引入:

      const dayjs = require('dayjs'); // CommonJS
      import dayjs from 'dayjs';      // ES Module
      

      2. Day.js 的核心功能

      2.1 創(chuàng)建日期對象

      Day.js 提供多種方式創(chuàng)建日期對象:

      import dayjs from 'dayjs';
      ?
      // 當(dāng)前時間
      console.log(dayjs().format()); // 2025-01-21T13:45:00+00:00
      ?
      // 指定日期
      console.log(dayjs('2025-01-01').format()); // 2025-01-01T00:00:00+00:00
      ?
      // 使用 JavaScript 的 Date 對象
      console.log(dayjs(new Date(2025, 0, 1)).format()); // 2025-01-01T00:00:00+00:00
      

      2.2 格式化日期

      Day.js 提供了豐富的日期格式化功能:

      console.log(dayjs().format('YYYY-MM-DD')); // 2025-01-21
      console.log(dayjs().format('dddd, MMMM D, YYYY h:mm A')); // Tuesday, January 21, 2025 1:45 PM
      

      常見的格式化標(biāo)記包括:

      標(biāo)記描述示例
      YYYY 四位年份 2025
      MM 兩位月份(01-12) 01
      DD 兩位日期(01-31) 21
      H 小時(24 小時制) 13
      h 小時(12 小時制) 1
      m 分鐘 45
      A 上午/下午 PM

      2.3 日期計(jì)算

      Day.js 支持鏈?zhǔn)秸{(diào)用進(jìn)行日期加減操作:

      console.log(dayjs().add(1, 'day').format('YYYY-MM-DD')); // 明天
      console.log(dayjs().subtract(1, 'month').format('YYYY-MM-DD')); // 上個月
      

      支持的單位包括:

      單位描述
      year
      month
      week
      day
      hour 小時
      minute 分鐘
      second

      2.4 日期比較

      const date1 = dayjs('2025-01-01');
      const date2 = dayjs('2025-01-21');
      ?
      console.log(date1.isBefore(date2)); // true
      console.log(date1.isSame(date2));   // false
      console.log(date1.isAfter(date2));  // false
      

      3. Day.js 插件擴(kuò)展

      Day.js 的核心功能簡單精煉,擴(kuò)展功能由插件提供。常用插件包括:

      3.1 自定義解析格式(Custom Parse Format

      通過插件支持更復(fù)雜的日期解析格式:

      import customParseFormat from 'dayjs/plugin/customParseFormat';
      dayjs.extend(customParseFormat);
      ?
      const date = dayjs('21-01-2025', 'DD-MM-YYYY');
      console.log(date.format()); // 2025-01-21T00:00:00+00:00
      

      3.2 時區(qū)支持(UTC

      處理 UTC 時間需要安裝并擴(kuò)展 UTC 插件:

      import utc from 'dayjs/plugin/utc';
      dayjs.extend(utc);
      ?
      const utcTime = dayjs.utc().format();
      console.log(utcTime); // 2025-01-21T13:45:00Z
      

      3.3 相對時間(Relative Time

      實(shí)現(xiàn)日期的相對時間顯示:

      import relativeTime from 'dayjs/plugin/relativeTime';
      dayjs.extend(relativeTime);
      ?
      console.log(dayjs().to(dayjs('2025-01-25'))); // in 4 days
      console.log(dayjs().from(dayjs('2025-01-15'))); // 6 days ago
      

      3.4 持續(xù)時間(Duration

      計(jì)算兩個時間點(diǎn)之間的差異:

      import duration from 'dayjs/plugin/duration';
      dayjs.extend(duration);
      ?
      const diff = dayjs.duration(dayjs('2025-01-25').diff(dayjs('2025-01-21')));
      console.log(diff.days()); // 4
      

      4. 實(shí)戰(zhàn)案例

      4.1 倒計(jì)時功能

      function countdown(targetDate) {
        const now = dayjs();
        const target = dayjs(targetDate);
        const diff = dayjs.duration(target.diff(now));
      ?
        return `${diff.days()}${diff.hours()} 小時 ${diff.minutes()} 分鐘 ${diff.seconds()} 秒`;
      }
      ?
      console.log(countdown('2025-01-25'));
      

      4.2 工作日計(jì)算

      function isWorkday(date) {
        const day = dayjs(date).day();
        return day !== 0 && day !== 6; // 0 是周日, 6 是周六
      }
      ?
      console.log(isWorkday('2025-01-21')); // true
      console.log(isWorkday('2025-01-25')); // false
      

      4.3 動態(tài)顯示相對時間

      function showRelativeTime(date) {
        return dayjs().to(dayjs(date));
      }
      ?
      console.log(showRelativeTime('2025-01-25')); // in 4 days
      

      5. Day.js 和其他日期庫對比

      5.1 與 Moment.js 對比

      • 大小:Day.js(2KB)遠(yuǎn)小于 Moment.js(66KB)。
      • 性能:Day.js 更快,適合性能敏感的應(yīng)用場景。
      • API:兩者的 API 基本一致,Day.js 更簡潔。

      5.2 與 date-fns 對比

      • 功能:Day.js 更加專注于輕量級核心和擴(kuò)展性,而 date-fns 提供更豐富的函數(shù)庫。
      • 易用性:Day.js 的鏈?zhǔn)秸{(diào)用和 API 風(fēng)格更直觀。

      6. 總結(jié)

      Day.js 是一個強(qiáng)大而輕量的日期處理工具,提供了直觀的 API 和豐富的插件擴(kuò)展功能,能夠滿足絕大多數(shù)日期和時間的處理需求。 無論是開發(fā)大型項(xiàng)目,還是簡單的日期處理任務(wù),Day.js 都是一個優(yōu)秀的選擇。

      參考文檔

      posted @ 2025-10-17 16:29  dirgo  閱讀(23)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美成人精品一区二区三区免费| 亚洲精品日韩在线观看| 国产成人亚洲精品成人区| 精品自拍偷拍一区二区三区| 野外做受三级视频| 容城县| 久久精品国产99久久美女| 精品国产一区二区三区卡| 国产日韩精品秘 入口| 阿合奇县| 色综合视频一区二区三区| 国产精品亚洲中文字幕| 人人入人人爱| 国产精品中文字幕久久| 激情综合五月网| 亚洲中文字幕在线二页| 久久久精品波多野结衣av| 久久国内精品一区二区三区| 亚洲综合一区国产精品| 西贡区| 国产欧美va欧美va在线| 欧美成人aaa片一区国产精品| 野外做受三级视频| 大尺度国产一区二区视频| 久久影院午夜伦手机不四虎卡| 中文字幕亚洲制服在线看 | 肉大榛一进一出免费视频| 亚洲鸥美日韩精品久久| 你拍自拍亚洲一区二区三区| 国产精品v欧美精品∨日韩| 91密桃精品国产91久久| 久青草国产在视频在线观看| 亚洲日韩成人av无码网站| 国产精品扒开腿做爽爽爽a片唱戏| 又粗又硬又黄a级毛片| 天天躁日日躁狠狠躁av麻豆男男| 成人亚洲狠狠一二三四区| 国产午夜福利精品视频| 久久久久久毛片免费播放| 久久精品夜色国产亚洲av| 国产午夜亚洲精品国产成人|