【问题标题】:Get default browser settings like TimeZone, Dateformat, timeFormat and language using javascript使用 javascript 获取默认浏览器设置,例如 TimeZone、Dateformat、timeFormat 和语言
【发布时间】:2021-02-15 15:34:42
【问题描述】:

我们如何使用 javascript 或任何其他 js 库获取所有默认浏览器/系统/国家/地区设置?

  1. 比如浏览器的默认时区格式是什么? (UTC+05:30 或 UTC+01:00 等)

  2. 根据时区的默认日期格式是什么? ('DD/MM/YYYY' 或 'MM/DD/YYYY' 或 'YYYY/MM/DD')

  3. 根据浏览器的默认时间格式是什么? (“上午/下午”或“24 小时”)

  4. 浏览器的默认语言?

    • 如果我们使用 javascript 执行 navigator.language,我们会得到“en-GB”,但我们能得到完整的表格吗?比如英语、西班牙语、瑞典语等
  5. 默认温度单位? (摄氏或华氏)

【问题讨论】:

    标签: javascript browser momentjs navigator


    【解决方案1】:

    比如浏览器的默认时区格式是什么? (UTC+05:30 或 UTC+01:00 等)

    时区是首选项,没有默认值。 Be careful about what you assume

    要获取时区偏移量,即您需要从 UTC 中减去的分钟数,请使用以下命令。对于亚洲和澳大利亚的用户,这通常是一个负数,而对于美洲的用户,这通常是一个正数。

    new Date().getTimezoneOffset()
    

    如果你想知道时区,你可以得到它

    Intl.DateTimeFormat().resolvedOptions().timeZone
    // => "Atlantic/Reykjavik"
    // => "Americas/New_York"
    // => "Asia/Shanghai"
    

    如果您将其翻译为 3 个字符的缩写,请务必小心。 “Americas/New_York”可能是“EST”或“EDT”,具体取决于一年中的时间。 “CST”可以是中国标准时间、古巴标准时间、澳大利亚中部标准时间或中美洲标准时间。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl

    【讨论】:

      【解决方案2】:

      除了温度单位(浏览器对此一无所知),IETF 语言设置(在本例中为“en-GB”)告诉浏览器在使用 .toLocaleString() 时如何格式化输出。将打印带有 TZ 偏移量的日期对象,与 .toLocalDateString() 相同的日期将在正确的语言环境中给出日期 'DD/MM/YYYY' ,而与 .toLocaleTimeString() 相同的日期将给出时间与 'AM/PM或 24 小时表示。

      const date = new Date();
      console.log(date.toString());
      console.log(date.toUTCString());
      console.log(date.toLocaleString());
      console.log(date.toLocaleDateString());
      console.log(date.toLocaleTimeString());
      // Get TZ for instance
      const tz = date.toString().match(/GMT(-|\+)[0-9]{4}.*/)[0];
      console.log(tz);

      【讨论】:

      • 这些东西会给出时间和细节的东西,但我需要它的默认格式。
      • 当然——这就是我试图解释的。您所追求的“默认格式”由 navigator.language 确定。在您的问题中,该值为 en-GB。
      • “默认格式”在 JavaScript 中使用带有 Intl API 的语言标签实现
      • /GMT-[0-9]{4}.*/ 将失败,因为第四个字符可能是 -+。尝试解析 new Date().toString() 将非常脆弱。
      猜你喜欢
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2010-10-18
      • 2021-08-18
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多