js 时间是零区时间如何转成东八区时间?

"2023-07-31T02:36:31.000+00:00"
这个时间格式如何转成 '2023-07-31 10:36:31'这个时间

解决方案

    // 零区转东八区
    format(date) {
        var offset = 8;
        var targetTime = new Date(date);
        var utc = targetTime.getTime() + (-28800000);
        var actualTime = new Date(utc + (3600000 * offset));

        var year = actualTime.getFullYear();
        var month = (actualTime.getMonth() + 1) > 9 ? (actualTime.getMonth() + 1) : "0" + (actualTime.getMonth() +
            1);
        var day = actualTime.getDate() > 9 ? actualTime.getDate() : "0" + actualTime.getDate();
        var hour = actualTime.getHours() > 9 ? actualTime.getHours() : "0" + actualTime.getHours();
        var minute = actualTime.getMinutes() > 9 ? actualTime.getMinutes() : "0" + actualTime.getMinutes();
        var second = actualTime.getSeconds() > 9 ? actualTime.getSeconds() : "0" + actualTime.getSeconds();
        return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
    },
阅读 3.6k
2 个回答
let utcDate = new Date("2023-07-31T02:36:31.000+00:00");
let chinaTime = utcDate.toLocaleString("en-US", {timeZone: "Asia/Shanghai", hour12: false});

// 把日期和时间格式化成 'yyyy-mm-dd hh:mm:ss' 格式
chinaTime = chinaTime.replace(/\/|,|:/g, "-").split("-");
chinaTime = `${chinaTime[2]}-${chinaTime[0].padStart(2, '0')}-${chinaTime[1].padStart(2, '0')} ${chinaTime[3]}:${chinaTime[4]}:${chinaTime[5]}`;

console.log(chinaTime);  // 输出:'2023-07-31 10:36:31'
// 原始时间字符串
let dateString = "2023-07-31T02:36:31.000+00:00";

// 创建 Date 对象
let date = new Date(dateString);

// 转换为东八区时间,得到的是毫秒数
let timeZone = 8;
let localTime = date.getTime();
let localOffset = date.getTimezoneOffset() * 60000; 
let utc = localTime + localOffset;
let wishTime = utc + (3600000 * timeZone);

let finalDate = new Date(wishTime);

// 格式化输出
let year = finalDate.getFullYear();
let month = finalDate.getMonth() + 1;
let day = finalDate.getDate();
let hour = finalDate.getHours();
let minute = finalDate.getMinutes();
let second = finalDate.getSeconds();

let result = year +
  "-" +
  (month < 10 ? "0" + month : month) +
  "-" +
  (day < 10 ? "0" + day : day) +
  " " +
  (hour < 10 ? "0" + hour : hour) +
  ":" +
  (minute < 10 ? "0" + minute : minute) +
  ":" +
  (second < 10 ? "0" + second : second);

console.log(result);  // 输出 '2023-07-31 10:36:31'
推荐问题