幾乎所有用 JavaScript 編寫的應用程式都以某種方式處理時間或日期。一開始,這僅限於內建的 Date API。該 API 包含基本功能,但其功能非常有限。 Moment.js 等第三方函式庫以及後來的 Intl API 和新的 Temporal API 等內建 API 為處理時間和日期提供了更大的靈活性。 Moment.js 的興衰 Moment.js 是一個 JavaScript 函式庫,具有用於處理時間和日期的強大實用程式。它包含基本 Date API 中缺少的功能(例如時區操作),並使許多常見操作變得更簡單。 Moment 也包括格式化日期和時間的函數。它成為許多不同應用程式中廣泛使用的庫。 然而,Moment 也存在一些問題。它是一個大型庫,可以顯著增加應用程式的套件大小。由於該程式庫不支援 Tree Shaking(現代捆綁程式的一項功能,可以刪除庫中未使用的部分),因此即使您只使用其中的一兩個函數,整個 Moment 程式庫也會包含在內。 Moment 的另一個問題是它所建立的物件是可變的。在 Moment 物件上呼叫某些函數會產生副作用,並會改變該物件的值。這可能會導致意外的行為或錯誤。 2020 年,Moment 的維護者決定將程式庫置於維護模式。沒有進行任何新功能開發,維護人員建議不要將其用於新專案。 還有其他 JavaScript 日期庫,例如 date-fns,但有一個新的參與者,一個直接內建在 JavaScript 中的 API:Temporal。這是一個新標準,填補了原始 Date API 的漏洞,並解決了 Moment 和其他庫中發現的一些限制。 什麼是時間? Temporal 是一個新的時間和日期 API,被加入到 ECMAScript 標準中,定義了現代 JavaScript。截至 20266 年 3 月,它已達到 TC39 流程(監督 JavaScript 語言提案和補充的委員會)的第 4 階段,並將包含在下一版本的 ECMAScript 規範中。它已經在多種瀏覽器中實現:Chrome 144+ 和 Firefox 139+,Safari 預計很快也會跟進。不支援的瀏覽器和 Node.js 也可以使用 polyfill。 Temporal API 所建立的物件通常代表時間上的時刻。這些可以是給定時區的全時和日期戳,也可以是沒有任何時區或日期資訊的「掛鐘」時間的通用實例。 Temporal 的一些主要功能包括:

有或沒有日期的時間。 Temporal 物件可以表示特定日期的特定時間,或不帶任何日期資訊的時間。也可以表示沒有時間的特定日期。 時區支援。時間對象完全了解時區,並且可以跨不同時區進行轉換。 Moment 也支援時區,但它需要額外的 moment-timezone 函式庫。 不變性。一旦創建了 Temporal 對象,就無法更改。時間算術或時區轉換不會修改底層物件。相反,它們會產生一個新的 Temporal 物件。 基於 1 的索引。 Date API(以及 Moment)的常見錯誤來源是月份的索引為零。這意味著一月是第 0 個月,而不是我們在現實生活中所理解的第 1 個月。 Temporal 透過使用基於 1 的索引來修復此問題 — 一月是第 1 個月。 它內建於瀏覽器中。由於 Temporal 是瀏覽器本身的 API,因此它不會增加應用程式的套件大小。

還需要注意的是,Date API 不會消失。雖然 Temporal 取代了此 API,但它並未被刪除或棄用。如果瀏覽器突然刪除 Date API,許多應用程式就會崩潰。但是,也要記住,Moment 現在被視為處於維護模式的遺留項目。 在本文的其餘部分中,我們將介紹一些將基於 Moment 的程式碼遷移到新的 Temporal API 的「秘訣」。讓我們開始重構吧! 建立日期和時間對象 在我們可以操作日期和時間之前,我們必須建立代表它們的物件。若要建立表示目前日期和時間的 Moment 對象,請使用 moment 函數。 const now = moment(); 控制台.log(現在); // 時刻<2026-02-18T21:26:29-05:00>

現在可以根據需要格式化或操作該物件。

// 轉換為UTC //警告:這會改變 Moment 物件並將其置於 UTC 模式! console.log(now.utc()); // 時刻<2026-02-19T02:26:29Z>

// 列印格式化字串 - 請注意它現在使用 UTC 時間 console.log(now.format('MM/DD/YYYY hh:mm:ss a')); // 02/19/2026 上午 02:27:07 上午

關於 Moment 需要記住的關鍵一點是 Moment 物件始終包含有關時間和日期的資訊。如果您只需要使用時間訊息,這通常沒問題,但在夏令時或閏年等情況下可能會導致意外行為,其中日期可能會影響時間計算。 時間上更有彈性。您可以透過建立 Temporal.Instant 物件來建立表示當前日期和時間的物件。這表示自「紀元」(1970 年 1 月 1 日午夜 UTC)以來的時間定義的時間點。 Temporal 可以以奈秒的精度參考這一時刻。 const now = Temporal.Now.instant();

// 看自紀元以來的原始納秒 console.log(now.epochNanoseconds); // 1771466342612000000n

// UTC 格式 console.log(now.toString()); // 2026-02-19T01:55:27.844Z

// 特定時區的格式 console.log(now.toString({ timeZone: '美國/紐約' })); // 2026-02-18T20:56:57.905-05:00

也可以使用 from 靜態方法為特定時間和日期建立 Temporal.Instant 物件。

const myInstant = Temporal.Instant.from('2026-02-18T21:10:00-05:00');

// 設定本地時區的即時格式。請注意,這僅控制 // 格式化 - 它不會像 moment.utc 那樣改變物件。 console.log(myInstant.toString({ timeZone: '美國/紐約' })); // 2026-02-18T21:10:00-05:00

您也可以建立其他類型的時間對象,包括:

Temporal.PlainDate:沒有時間資訊的日期。 Temporal.PlainTime:沒有日期資訊的時間。 Temporal.ZonedDateTime:特定時區的日期和時間。

其中每個都有一個 from 方法,可以使用指定日期和/或時間的物件或要解析的日期字串來呼叫該方法。 // 只是日期 const 今天 = Temporal.PlainDate.from({ 年份:2026年, Month: 2, // 注意我們使用 2 表示二月 天:18 }); console.log(today.toString()); // 2026-02-18

// 只是一次 const LunchTime = Temporal.PlainTime.from({ 小時:12 }); console.log(lunchTime.toString()); // 12:00:00

// 美國東部時區的日期和時間 const dueAt = Temporal.ZonedDateTime.from({ 時區: '美國/紐約', 年份:2026年, 月份: 3, 天: 1, 小時: 12, 分鐘:0, 第二:0 }); console.log(dueAt.toString()); // 2026-03-01T12:00:00-05:00[美國/紐約]

解析 我們已經介紹了日期和時間資訊的程式設計創建。現在我們來看看解析。解析是 Moment 比內建 Temporal API 更靈活的領域之一。 您可以透過將日期字串傳遞給 moment 函數來解析它。對於單一參數,Moment 需要 ISO 日期字串,但如果您提供第二個參數來指定所使用的日期格式,則可以使用替代格式。

const isoDate = moment('2026-02-21T09:00:00'); const formattedDate = moment('2/21/26 9:00:00', 'M/D/YY h:mm:ss');

控制台.log(isoDate); // 時刻<2026-02-21T09:00:00-05:00>

console.log(格式化日期); // 時刻<2026-02-21T09:00:00-05:00>

在舊版本中,Moment 會做出最佳猜測來解析任何任意格式的日期字串。這可能會導致不可預測的結果。例如,02-03-2026 是 2 月 2 日還是 3 月 3 日?因此,如果在沒有 ISO 格式的日期字串的情況下呼叫 Moment,較新版本的 Moment 會顯示顯著的棄用警告(除非也給出了具有所需格式的第二個參數)。 Temporal 只會解析特定格式的日期字串。該字串必須符合 ISO 8601 格式或其擴充 RFC 9557。如果將不符合要求的日期字串傳遞給 from 方法,Temporal 將引發 RangeError。

// 使用 RFC 9557 日期字串 const myDate = Temporal.Instant.from('2026-02-21T09:00:00-05:00[美國/紐約]'); console.log(myDate.toString({ timeZone: '美國/紐約' })); // 2026-02-21T09:00:00-05:00

// 使用未知的日期字串 const otherDate = Temporal.Instant.from('2/21/26 9:00:00'); // RangeError:時間錯誤:解析年份值時字元無效。

日期字串的確切要求取決於您要建立的 Temporal 物件的類型。在上面的範例中,Temporal.Instant 需要完整的 ISO8601 或 RFC 9557 日期字串指定帶有時區偏移的日期和時間,但您也可以只使用日期格式的子集建立 PlainDate 或 PlainTime 物件。 const myDate = Temporal.PlainDate.from('2026-02-21'); console.log(myDate.toString()); // 2026-02-21

const myTime = Temporal.PlainTime.from('09:00:00'); console.log(myTime.toString()); // 09:00:00

請注意,這些字串仍然必須符合預期的格式,否則將引發錯誤。

// 使用不合規的時間字串。這些都會拋出 RangeError。 Temporal.PlainTime.from('9:00'); Temporal.PlainTime.from('9:00:00 AM');

專業提示:處理非 ISO 字串因為 Temporal 優先考慮可靠性,所以它不會嘗試猜測像 02-01-2026 這樣的字串的格式。如果您的資料來源使用此類字串,則在嘗試將其與 Temporal 一起使用之前,您將需要執行一些字串操作以將值重新排列為 ISO 字串(例如 2026-02-01)。

格式化 一旦有了 Moment 或 Temporal 對象,您可能希望在某個時候將其轉換為格式化字串。 這是 Moment 更簡潔的例子。您可以使用描述所需日期格式的標記字串來呼叫物件的格式方法。 常量日期 = 時刻();

console.log(date.format('MM/DD/YYYY')); // 2026 年 2 月 22 日

console.log(date.format('MMMM Do YYYY, h:mm:ss a')); // 2026 年 2 月 22 日晚上 8:18:30

另一方面,Temporal 要求您更詳細一些。暫存物件(例如 Instant)具有 toLocaleString 方法,該方法接受指定為物件屬性的各種格式選項。

const 日期 = Temporal.Now.instant();

// 不帶參數,我們將獲得當前語言環境的預設格式 console.log(date.toLocaleString()); // 2/22/2026, 8:23:36 PM(假設區域設定為 en-US)

// 傳遞格式化選項以產生自訂格式字串 console.log(date.toLocaleString('en-US', { 月份:“長”, 日:'數字', 年份:'數字', 小時:'2 位數字', 分鐘:“2 位數字” })); // 2026 年 2 月 22 日晚上 8:23

// 只在格式字串中傳遞你想要的字段 console.log(date.toLocaleString('en-US', { 月份:“短”, 日:'數字' })); // 2 月 22 日

臨時日期格式化實際上在底層使用了 Intl.DateTimeFormat API(現代瀏覽器中已經可以使用)。這表示您可以使用自訂格式選項建立可重複使用的 DateTimeFormat 對象,然後將 Temporal 物件傳遞給其格式方法。因此,它不支援像 Moment 那樣的自訂日期格式。如果您需要「2026 年第一季」或其他特殊格式,您可能需要一些自訂日期格式程式碼或存取第三方程式庫。 const 格式化程式 = new Intl.DateTimeFormat('en-US', { 月份:'2 位數字', 日:'2 位數字', 年份:'數字' });

const 日期 = Temporal.Now.instant(); console.log(formatter.format(日期)); // 2026 年 2 月 22 日

Moment 的格式化標記編寫起來更簡單,但它們不適合區域設定。格式字串“硬編碼”諸如月/日順序之類的東西。像 Temporal 一樣,使用配置物件的優點是它會自動適應任何給定的語言環境並使用正確的格式。 const 日期 = Temporal.Now.instant();

const 格式選項 = { 月份:'數字', 日:'數字', 年份:'數字' };

console.log(date.toLocaleString('en-US', formatOptions)); // 2026 年 2 月 22 日

console.log(date.toLocaleString('en-GB', formatOptions)); // 2026 年 2 月 22 日

日期計算 在許多應用程式中,您最終需要對日期執行一些計算。您可能需要添加或減去時間單位(天、小時、秒等)。例如,如果您有當前日期,您可能會想要向使用者顯示 1 週後的日期。 Moment 物件具有執行這些操作的加法和減法等方法。這些函數採用一個值和一個單位,例如:add(7, 'days')。然而,Moment 和 Temporal 之間的一個非常重要的差異是,在執行這些日期計算時,底層物件會被修改,並且其原始值會遺失。 const now = moment();

控制台.log(現在); // 時刻<2026-02-24T20:08:36-05:00>

const nextWeek = now.add(7, '天'); 控制台.log(下週); // 時刻<2026-03-03T20:08:36-05:00>

// 問題 - 原始物件已發生突變 控制台.log(現在); // 時刻<2026-03-03T20:08:36-05:00>

為了避免遺失原始日期,您可以對Moment物件呼叫clone來建立副本。 現在常數=時刻(); const nextWeek = now.clone().add(7, '天');

控制台.log(現在); // 時刻<2026-02-24T20:12:55-05:00>

控制台.log(下週); // 時刻<2026-03-03T20:12:55-05:00>

另一方面,時間對像是不可變的。一旦創建了 Instant、PlainDate 等對象,該對象的值就永遠不會改變。時間對像也有加法和減法方法。 Temporal 對於可以將哪些時間單位新增至哪些物件類型有點挑剔。例如,您不能為 Instant 新增天數:

const now = Temporal.Now.instant(); const nextWeek = now.add({ 天數: 7 }); // RangeError:時間錯誤:最大單位不能是日期單位

這是因為 Instant 物件代表 UTC 中的特定時間點且與日曆無關。由於一天的長度可能會根據時區規則(例如夏令時)而變化,因此此計算在 Instant 上不可用。但是,您可以對其他類型的物件執行此操作,例如 PlainDateTime: const now = Temporal.Now.plainDateTimeISO(); console.log(now.toLocaleString()); // 2026 年 2 月 24 日晚上 8:23:59

const nextWeek = now.add({ 天數: 7 });

// 注意原來的PlainDateTime保持不變 console.log(now.toLocaleString()); // 2026 年 2 月 24 日晚上 8:23:59

console.log(nextWeek.toLocaleString()); // 2026 年 3 月 3 日晚上 8:23:59

您也可以計算兩個 Moment 或 Temporal 物件之間的時間間隔。 使用 Moment 的 diff 函數,您需要提供粒度單位,否則它將傳回以毫秒為單位的差異。 const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');

console.log(date2.diff(date1)); // 91800000

console.log(date2.diff(date1, '天')); // 1

若要使用 Temporal 物件執行此操作,您可以將另一個 Temporal 物件傳遞給其 Until 或 Since 方法。這將傳回一個 Temporal.Duration 對象,其中包含有關時間差的資訊。 Duration 物件具有差異的每個組成部分的屬性,並且還可以產生表示時間差的 ISO 8601 持續時間字串。

const date1 = Temporal.PlainDateTime.from('2026-02-21T09:00:00'); const date2 = Temporal.PlainDateTime.from('2026-02-22T10:30:00');

//largestUnit指定最大的時間單位來表示 // 在持續時間計算中 const diff = date2.since(date1, {largeUnit: '天' });

console.log(diff.days); // 1

console.log(diff.hours); // 1

console.log(diff.分鐘); // 30

console.log(diff.toString()); // P1DT1H30M //(ISO 8601 持續時間字串:1 天、1 小時、30 分鐘)

比較日期和時間 Moment 和 Temporal 都可以讓您比較日期和時間,以確定哪個在另一個之前,但對 API 採取不同的方法。 Moment 提供了 isBefore、isAfter 和 isSame 等方法來比較兩個 Moment 物件。 const date1 = moment('2026-02-21T09:00:00'); const date2 = moment('2026-02-22T10:30:00');

console.log(date1.isBefore(date2)); // 正確

Temporal 使用靜態比較方法來執行相同類型的兩個物件之間的比較。如果第一個日期早於第二個日期,則傳回 -1;如果它們相等,則傳回 0;如果第一個日期晚於第二個日期,則傳回 1。以下範例示範如何比較兩個 PlainDate 物件。 Temporal.PlainDate.compare 的兩個參數都必須是 PlainDate 物件。

const date1 = Temporal.PlainDate.from({ 年:2026 年,月:2,日:24 }); const date2 = Temporal.PlainDate.from({ 年:2026 年,月:3,日:24 });

// date1 在 date2 之前,所以 -1 console.log(Temporal.PlainDate.compare(date1, date2));

// 如果我們嘗試比較兩個不同類型的對象,則會出錯 console.log(Temporal.PlainDate.compare(date1, Temporal.Now.instant())); // TypeError:時間錯誤:提供的 PlainDate 欄位無效。

特別是,這使得按時間順序對 Temporal 物件陣列進行排序變得容易。 // Temporal.PlainDate 物件的陣列 常量日期 = [ ... ];

// 使用 Temporal.PlainDate.compare 作為比較器函數 日期.排序(Temporal.PlainDate.compare);

時區換算 核心 Moment 函式庫不支援時區轉換。如果需要此功能,還需要安裝 moment-timezone 套件。該套件不可進行樹搖動,因此會顯著增加您的套件大小。安裝 moment-timezone 後,您可以使用 tz 方法將 Moment 物件轉換為不同的時區。與其他 Moment 操作一樣,這會改變底層目的。 // 假設美國東部時間 const now = moment(); 控制台.log(現在); // 時刻<2026-02-28T20:08:20-05:00>

// 轉換為太平洋時間。 // 原始東部時間遺失。 now.tz('美國/洛杉磯'); 控制台.log(現在); // 時刻<2026-02-28T17:08:20-08:00>

使用 Temporal.ZonedDateTime 物件時,時區功能內建於 Temporal API 中。這些物件包括一個 withTimeZone 方法,該方法傳回一個新的 ZonedDateTime ,表示同一時刻,但在指定的時區。 // 再次假設美國東部時間 const now = Temporal.Now.zonedDateTimeISO(); console.log(now.toLocaleString()); // 美國東部時間 2026 年 2 月 28 日晚上 8:12:02

// 轉換為太平洋時間 const nowPacific = now.withTimeZone('美國/洛杉磯'); console.log(nowPacific.toLocaleString()); // 2026 年 2 月 28 日下午 5:12:02(太平洋標準時間)

// 原始物件保持不變 console.log(now.toLocaleString()); // 美國東部時間 2026 年 2 月 28 日晚上 8:12:02

注意:toLocaleString 傳回的格式化值,顧名思義,與區域設定相關。範例程式碼是在 en-US 語言環境中開發的,因此格式如下:2/28/2026, 5:12:02 PM PST。在另一個區域設定中,這可能有所不同。例如,在 en-GB 區域設定中,您會得到類似 28/2/2026, 17:12:02 GMT-8 的資訊。 現實世界的重構 假設我們正在建立一個用於跨時區安排活動的應用程式。此應用程式的一部分是一個函數 getEventTimes,它採用表示事件的時間和日期、本地時區和目標時區的 ISO 8601 字串。此函數為兩個時區的事件建立格式化的時間和日期字串。 如果函數給出的輸入字串不是有效的時間/日期字串,它將拋出錯誤。 這是使用 Moment 的原始實作(還需要使用 moment-timezone 套件)。

從「時刻時區」導入時刻;

函數 getEventTimes(inputString, userTimeZone, targetTimeZone) { const timeFormat = 'MMM D, YYYY, h:mm:ss a z';

// 1. 建立使用者所在時區的初始時刻 const eventTime = moment.tz( 輸入字串, moment.ISO_8601, // 期望 ISO 8601 字串 true, // 嚴格解析 用戶時區 );

// 如果輸入字串不代表有效日期,則拋出錯誤 if (!eventTime.isValid()) { throw new Error('無效的日期/時間輸入'); }

// 2.計算目標時間 // 關鍵:我們必須克隆,否則「eventTime」將永遠改變! const targetTime = eventTime.clone().tz(targetTimeZone);

返回{ 本地:eventTime.format(timeFormat), 目標:targetTime.format(timeFormat), }; }

常數行程 = getEventTimes( '2026-03-05T15:00-05:00', '美國/紐約', '歐洲/倫敦', );

console.log(schedule.local); // 美國東部時間 2026 年 3 月 5 日下午 3:00:00

console.log(schedule.target); // 格林威治標準時間 2026 年 3 月 5 日晚上 8:00:00

在此範例中,我們使用 ISO 8601 的預期日期格式,該格式內建於 Moment 中,非常有用。我們還使用嚴格的解析,這意味著 Moment 不會嘗試猜測與格式不符的日期字串。如果傳遞非 ISO 日期字串,將導致無效的日期對象,並且我們會拋出錯誤。 Temporal 實作看起來很相似,但有一些關鍵差異。

函數 getEventTimes(inputString, userTimeZone, targetTimeZone) { // 1.將輸入直接解析成Instant,然後創建 // 使用者區域中的 ZonedDateTime。 const instant = Temporal.Instant.from(inputString); const eventTime = instant.toZonedDateTimeISO(userTimeZone);

// 2. 轉換到目標區域 // 這會自動傳回一個新物件; “eventTime”是安全的。 const targetTime = eventTime.withTimeZone(targetTimeZone);

// 3. 使用 Intl 格式化(內建) 常數選項 = { 年份:'數字', 月份:“短”, 日:'數字', 小時:'數字', 分鐘:'2 位數字', 第二個:“2 位數字”, 時區名稱:'短' };

返回{ 本地: eventTime.toLocaleString(navigator.language, options), 目標:targetTime.toLocaleString(navigator.語言,選項) }; }

常數行程 = getEventTimes( '2026-03-05T15:00-05:00', '美國/紐約', '歐洲/倫敦', );

console.log(schedule.local); // 美國東部時間 2026 年 3 月 5 日下午 3:00:00

console.log(schedule.target); // 格林威治標準時間 2026 年 3 月 5 日晚上 8:00:00

對於 Moment,我們必須為結果日期字串明確指定格式字串。無論使用者的位置或區域設定如何,事件時間的格式將始終為 Mar 5, 2026, 3:00:00美國東部時間下午。 此外,我們不必明確拋出異常。如果將無效字串傳遞給 Temporal.Instant.from,Temporal 將為我們拋出異常。需要注意的一點是,即使進行了嚴格的解析,Moment 版本仍然更加寬鬆。時間需要字串末尾的時區偏移。 您還應該注意,由於我們使用的是 navigator.language,因此程式碼只能在瀏覽器環境中執行,因為 navigator 不是在 Node.js 環境中定義的。 Temporal 實作使用瀏覽器的目前區域設定 (navigator.language),因此使用者將自動取得採用本機時間格式的事件時間。在 en-US 語言環境中,時間為 2026 年 3 月 5 日下午 3:00:00(美國東部時間)。但是,例如,如果使用者位於倫敦,則事件時間將格式化為 2026 年 3 月 5 日,15:00:00 GMT-5。 總結

行動 Moment.js 顳葉 目前時間 時刻() Temporal.Now.zonedDateTimeISO() 解析ISO 力矩(str) Temporal.Instant.from(str) 添加時間 .add(7, 'days') (變異) .add({ days: 7 }) (新物件) 差異 .diff(其他, '小時') .自(其他).小時 時區 .tz('區域/名稱') .withTimeZone('區域/名稱')

乍一看,語法上的差異可能略有不同(對於 Temporal,有時更詳細、更嚴格),但與 Moment.js 相比,使用 Temporal 有幾個關鍵優勢:

更明確意味著更少的意外和意外錯誤。 Moment 可能看起來更寬鬆,但它涉及“猜測”,有時會導致日期不正確。如果你給 Temporal 一些無效的東西,它會拋出一個錯誤。如果程式碼運行,您就知道您已經獲得了有效的日期。 Moment 可以顯著增加應用程式套件的大小,特別是當您使用 moment-timezone 套件時。 Temporal 不會添加任何內容(一旦它在您的目標瀏覽器中發布)。 不變性讓您確信在執行日期轉換和操作時永遠不會遺失或覆蓋資料。 根據您的要求,時間的不同表示形式(Instant、PlainDateTime、ZonedDateTime),其中 Moment 始終是 UTC 時間戳記的包裝。 Temporal 使用 Intl API 進行日期格式設置,這表示您無需明確指定標記即可進行區域設定感知格式設定。

關於 Polyfill 的註釋 如前所述,有一個 Temporal polyfill 可用,作為名為 @js-temporal/polyfill 的 npm 套件分發。如果您今天想使用 Temporal,您將需要這個 polyfill 來支援 Safari 等尚未提供 API 的瀏覽器。壞消息是它會增加你的包包大小。好消息是它的增加量仍然明顯少於 moment 或 moment-timezone。以下是 Bundlephobia.com 報告的套件大小比較,該網站提供有關 npm 套件大小的資訊(點擊每個套件名稱即可查看 Bundlephobia 分析):

套餐 縮小版 縮小並壓縮 @js-temporal/polyfill 154.1 KB 44.1 KB 時刻 294.4 KB 75.4 KB 時刻時區 1MB 114.2 KB

Polyfill 歷史上也存在一些與記憶體使用相關的效能問題,在撰寫本文時,它被認為處於 alpha 狀態。因此,在它達到更成熟的狀態之前,您可能不想在生產中使用它。 另一個好消息是,希望 Polyfill 不會被需要太久(當然,除非您需要支援較舊的瀏覽器)。截至撰寫本文時,Temporal 已在 Chrome、Edge 和 Firefox 中發布。它在 Safari 中還沒有完全準備好,儘管它似乎可以在最新的技術預覽中使用運行時標誌。

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free