获取任何国家/地区的时间格式

Get the format of time for any country

有没有办法在JS中获取基于时区的时间格式?我想要的是这样的东西: getSpecificTimeFormat("America/New_York") returns "h:mm a" 和 getSpecificTimeFormat("Europe/Paris") returns "HH:mm"等等。

mozilla.org 中有关于如何使用 .toLocaleTimeString() 函数执行此操作的明确说明。

直接取自网站的示例:

You can find the documentation here

// Depending on timezone, your results will vary
const event = new Date('August 19, 1975 23:15:30 GMT+00:00');

console.log(event.toLocaleTimeString('en-US'));
// expected output: 1:15:30 AM

console.log(event.toLocaleTimeString('it-IT'));
// expected output: 01:15:30

console.log(event.toLocaleTimeString('ar-EG'));
// expected output: ١٢:١٥:٣٠ص

获取时区

- new Date().getTimezoneOffset() / 60

根据时区获取时间

const num=- new Date().getTimezoneOffset() / 60;

const newDate=new Date(new Date().getTime()+num*60*60*1000).toISOString()

此函数 returns 包含当前 date/time 格式数据的字符串,基于提供的语言环境字符串。

function getDateFormatString(locale) {
    
  const options = {
    hour: "numeric",
    minute: "numeric",
    second: "numeric",
    day: "numeric",
    month: "numeric",
    year: "numeric",
  };

  const formatObj = new Intl.DateTimeFormat(locale, options).formatToParts(
    Date.now()
  );

  return formatObj
    .map((obj) => {
      switch (obj.type) {
        case "hour":
          return "HH";
        case "minute":
          return "MM";
        case "second":
          return "SS";
        case "day":
          return "DD";
        case "month":
          return "MM";
        case "year":
          return "YYYY";
        default:
          return obj.value;
      }
    })
    .join("");
}

console.log(getDateFormatString("en-US")); //Expected Output: "MM/DD/YYYY, HH:MM:SS PM"

console.log(getDateFormatString("ko-KR")); //Expected Output: "YYYY. MM. DD. 오후 HH:MM:SS"

编辑选项以更改从日期对象和 edit/add 个案例中提取的数据以适应它。

查找 DateTimeFormat here 的文档。
我从 newbedev.com.

上的一篇文章中改编了函数