亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Intl.DateTimeFormat 在節點和瀏覽器中以不同的方式工作

Intl.DateTimeFormat 在節點和瀏覽器中以不同的方式工作

守著一只汪 2022-12-09 15:12:52
讓我們考慮以下代碼:console.log(new Intl.DateTimeFormat('pl-PL', {  year: 'numeric',  month: '2-digit',  day: '2-digit'}).format(new Date(2019, 2, 4)));在Node JS它給予2019-03-04但在chrome browser它回報04.03.2019。為什么?我的問題類似于:為什么 Intl.DateTimeFormat 在不同的瀏覽器中產生不同的結果?node 和 chrome 的官方文檔在哪里,我什么時候可以閱讀這些差異。更新:它可能對某人有幫助,所以我將添加它以強制執行我正在使用此代碼的通用格式:export const useDashInDate = (dateString: string): string => {     return /\d{4}-\d{2}-\d{2}/.test(dateString) ? dateString : dateString.split('.').reverse().join('-'); };
查看完整描述

1 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

DateTimeFormat.format返回的字符串的格式是基于語言代碼的,但是沒有規范將語言映射到格式。因此,每個實現都可以自由地將語言映射到它想要的格式。大多數情況下,它們是一致的,但并非總是如此。如果不支持特定語言,它可能會回退到默認值(例如 ISO 8601 或像 en 這樣的通用語言代碼)。

如果您想要特定格式,請使用您自己的函數手動執行或使用庫,請參閱如何格式化 JavaScript 日期。

例如,您可以將formatToParts與更通用的語言代碼一起使用:

function format(date) {

  let {year, month, day} = new Intl.DateTimeFormat('pl', {

    year: 'numeric',

    month: '2-digit',

    day: '2-digit'

  }).formatToParts(date).reduce((acc, part) => {

    if (part.type != 'literal') {

      acc[part.type] = part.value;

    }

    return acc;

  }, Object.create(null));

  return `${day}.${month}.${year}`;

}

  

console.log(format(new Date(2019, 2, 4)));


查看完整回答
反對 回復 2022-12-09
  • 1 回答
  • 0 關注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號