成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

徹底告別 Date,TC 39 提案 Temporal API

開發 前端
JavaScript 自誕生以來,處理日期和時間一直是開發者們頭疼的難題。雖然 Date? 對象自 1990 年代就已經引入,但它的問題隨著時間的推移變得愈發突出。錯誤的時區處理、復雜的日期操作以及閏秒、夏令時等問題,令 Date API 在復雜場景中幾乎無法勝任。

Hello,大家好,我是 Sunday。

JavaScript 自誕生以來,處理日期和時間一直是開發者們頭疼的難題。雖然 Date 對象自 1990 年代就已經引入,但它的問題隨著時間的推移變得愈發突出。錯誤的時區處理、復雜的日期操作以及閏秒、夏令時等問題,令 Date API 在復雜場景中幾乎無法勝任。

為了徹底解決這些歷史遺留問題,TC39 提出了全新的 Temporal API,為 JavaScript 帶來了現代化、精確的日期時間處理能力。

1. 現有 Date API 的問題

Date 對象“曾經”是 JavaScript 中唯一內置的日期時間處理工具。但是,它在設計上有很多缺陷:

  • 時區問題:Date 默認依賴于操作系統的時區配置,這導致不同環境下的時間處理可能不一致。
  • 不可變性的缺失:Date 對象是可變的,這意味著在操作中可能會意外修改原有對象,導致代碼難以維護和調試。
  • API 不夠完善:對于復雜的日期操作,比如加減月份或年份,Date 提供的接口既不直觀也不夠靈活,且容易出錯。
  • 可能出現一些錯誤:Date 不能正確處理閏秒和其他復雜的時間邊界問題,這在實際應用中經常引發潛在錯誤。

這些問題給我們帶來了很多的困擾,導致我們不得不使用一些第三方的包(如:dayjs、momentjs 等)。

但是這種情況很快就要迎來變了,那就是 Temporal API!

2. Temporal API

Temporal API 的設計初衷是完全替代現有的 Date,提供一個更加精確、靈活、符合現代需求的日期時間操作工具。它通過一套全新的類和方法,重新定義了日期和時間的處理方式。

2.1 核心功能

Temporal 提供了一系列專門處理不同時間相關問題的對象和方法:

  • Temporal.PlainDate:表示沒有時區的日期(如 2024-10-20)。
  • Temporal.PlainTime:表示沒有時區的時間(如 14:30:00)。
  • Temporal.PlainDateTime:表示沒有時區的日期和時間組合(如 2024-10-20T14:30:00)。
  • Temporal.ZonedDateTime:表示帶有時區的日期和時間(如 2024-10-20T14:30:00-04:00[America/New_York])。
  • Temporal.Instant:表示唯一的、基于 UTC 的時間點,精確到納秒(如 2024-10-20T18:30:00.000000123Z)。

這些類型互相獨立,用戶可以根據不同的需求選擇合適的類型。例如:當只需處理日期時可以使用 PlainDate,而在處理跨時區的問題時可以使用 ZonedDateTime。

2.2 不可變性

Temporal API 的所有對象都是不可變的,每次操作返回一個新對象,不會改變原有對象。這種設計極大地提高了代碼的可讀性和安全性,避免了意外修改導致的難以追蹤的錯誤。

此外,Temporal 提供了精確到納秒的時間處理,解決了 Date 只能精確到毫秒的局限,特別適合對高精度有需求的場景。

2.3 時區與日歷系統的支持

Temporal API 內置了對時區和多種日歷系統的支持。我們可以方便地處理跨時區的時間轉換問題,而無需依賴外部庫。同時,Temporal 提供了多種日歷的支持,比如:公歷、佛歷、伊斯蘭歷等,這為國際化應用程序提供了極大的便利。

3. Temporal API 的典型使用場景

以下示例來自 來自 TC39 文檔:https://tc39.es/proposal-temporal/docs/

示例 1:基本日期操作

const today = Temporal.PlainDate.from('2024-10-20');
const nextWeek = today.add({ days: 7 });
console.log(nextWeek.toString());  // 輸出: 2024-10-27

在這個例子中,我們創建了一個表示當前日期的 PlainDate 對象,并通過 add 方法輕松計算出一周后的日期。

示例 2:跨時區時間處理

const nyTime = Temporal.ZonedDateTime.from({
 timeZone: 'America/New_York',
 year: 2024,
 month: 10,
 day: 20,
 hour: 12
})
const tokyoTime = nyTime.withTimeZone('Asia/ShangHai')
console.log(tokyoTime.toString()) // 輸出: 2024-10-21T00:00:00+08:00[Asia/Shanghai]

以上代碼把紐約時間轉化為北京時間('Asia/ShangHai')

示例 3:處理當前時間點

const instant = Temporal.Instant.now();
console.log(instant.toString());  // 輸出: 2024-10-20T14:30:00.123456789Z

Instant 表示唯一的瞬時時間,特別適合用于日志記錄、時序數據等需要精確記錄時間點的場景。

4. Temporal 相比 Date 的優勢

與傳統的 Date API 相比,Temporal 帶來了許多實質性的改進:

  1. 不變性:所有操作返回新對象,避免了潛在的數據修改問題。
  2. 精度提升:時間精度達到納秒級別,適用于高精度需求的場景。
  3. 時區支持:內置時區轉換功能,消除了手動處理時區的繁瑣操作。
  4. 多日歷支持:內置支持多種日歷系統,適應全球化需求。
  5. 更直觀的 API:Temporal API 設計更加直觀,日期時間的操作變得簡潔明了。

5. 如何在現有項目中使用 Temporal

因為 Temporal 是 TC39 的實驗性 API(哪怕已經很接近完善了),但是我們依然無法直接在瀏覽器中使用它。

如果想要使用,那么必須要配合 @js-temporal/polyfill 才可以

圖片圖片

我們可以直接創建一個 node 項目,然后通過 npm i @js-temporal/polyfill 完成安裝,然后利用require 導入 Temporal 即可使用

圖片 圖片

責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2021-07-30 18:35:10

JavaScript 模塊代碼

2022-09-21 08:00:58

JavaScriptTC39

2025-04-18 10:21:43

JavaScript開發Date

2024-06-25 12:39:05

2023-07-17 10:21:25

TC39JavaScript

2023-11-06 07:53:36

谷歌Android應用程序

2023-02-03 17:16:33

ECMAScriptAPITC39

2025-05-19 02:00:00

APIJavaScript對象

2022-07-07 08:30:50

類型注解原生JS

2009-09-14 09:09:07

Delphi 2010

2022-09-23 13:57:11

xxl-job任務調度中間件

2023-09-20 14:30:36

K8s亞馬遜谷歌

2023-05-09 12:08:02

FedoraLinux

2022-07-29 15:10:24

開發React

2015-04-16 10:47:08

Linux計算機重啟時代

2022-05-09 08:22:09

ReactHooks

2020-03-03 19:59:38

主板無線網卡

2009-02-27 09:08:43

蘋果喬布斯接班人

2015-08-03 14:49:51

2023-12-22 08:13:39

業務review流程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲网站在线观看 | 久久一二 | 亚洲国产一区在线 | 久在线观看 | 中国一级特黄真人毛片免费观看 | 久久久国产一区二区三区 | 国产精品久久久久久久久久 | 黄色av免费网站 | 天天干天天爽 | 亚洲69p| 国产精品一区二区av | 精品1区| 国产精品一卡 | 国产精品日韩高清伦字幕搜索 | 午夜激情小视频 | 91免费入口 | 激情在线视频网站 | 欧美精品第三页 | 中文天堂网| 中文无吗 | 超碰操 | 久久精品97 | 亚洲精品乱码久久久久久久久 | 伊人亚洲| 国产一级片在线播放 | 免费a大片| 黄色一级大片在线免费看产 | 久久精品国产一区二区三区 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 91在线精品视频 | 国产成人免费视频网站视频社区 | 欧美 日韩 国产 成人 在线 | 久草热线 | 国产精品a一区二区三区网址 | 亚洲欧美激情精品一区二区 | 国产精品美女一区二区三区 | a级片在线观看 | 欧美亚洲日本 | 国产欧美在线一区 | 美女露尿口视频 | 久精品久久 |