使用javascript获取默认浏览器设置,如TimeZone, Dateformat, timeFormat和语言.&



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

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

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

  3. 浏览器默认的时间格式是什么?('AM/PM'或'24 Hour')

  4. 浏览器默认语言?

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

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

时区是一个首选项,没有默认值。小心你的假设

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

new Date().getTimezoneOffset()

如果你想知道时区,你可以用

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

翻译成3个字符的缩写时要小心。"美洲/New_York"可能是"est";或";EDT"这取决于一年中的时间。"CST"可以是中国标准时间,也可以是古巴标准时间,也可以是中澳大利亚标准时间,也可以是中美洲标准时间。

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

除了温度单位(浏览器一无所知)之外,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);