gpt4 book ai didi

javascript - 将本地化 ISO 日期格式设置为 hh :mm:ss

转载 作者:行者123 更新时间:2023-12-01 03:41:20 26 4
gpt4 key购买 nike

我正在尝试将 UTC 日期转换为 Node 服务器上的本地时间,并最终以 hh:mm:ss 格式返回本地化时间。 (不使用 Moment JS)。我将从客户端传递到 Node 的时区偏移量,即 GMT-6。

我原来的时间是:2017-05-05T00:25:11.378Z

// ISOTimeString = `2017-05-05T00:25:11.378Z`
// offsetInMinutes = 360; (GMT - 6)
function isoDateToLocalDate(ISOTimeString, offsetInMinutes) {
var newTime = new Date(ISOTimeString);
return new Date(newTime.getTime() - (offsetInMinutes * 60000));
}

本地时间为 2017-05-04T18:25:11.378Z ,这是正确的( 2017-05-05T00:25:11 - 6 hours = 2017-05-04T18:25:11 )。

// localIsoDate: 2017-05-04T18:25:11.378Z Date object
function formatTime(localIsoDate) {
var hh = localIsoDate.getHours();
var mm = localIsoDate.getMinutes();
var ss = localIsoDate.getSeconds();
return [hh, mm, ss].join(':');
}

// formatted: 12:25:11

问题是,当我仍在服务器上时,当我尝试格式化为 hh:mm:ss 时,又减去了 6 个小时,给了我 12:25:11 。我不想再次转换,我只是想格式化并显示 18:25:11从已经确定的时间开始。

我该怎么做?

<小时/>

注意:请记住,在我的情况下,在将时区传回客户端后,我无法选择转换时区。

最佳答案

isoDateToLocalDate 似乎没问题,但是在 formatTime 中,您需要使用 UTC 方法,否则您将获取主机本地值,而不是调整后的 UTC 值。

此外,在 ISO 8601 术语(以及计算机编程之外的一般约定)中,偏移量 360 表示时区 +0600,而不是 -0600。请参阅下面的注释。

// ISOTimeString = 2017-05-05T00:25:11.378Z
// ECMAScript offsetInMinutes = 360; (GMT-0600)
function isoDateToLocalDate(ISOTimeString, offsetInMinutes) {
var newTime = new Date(ISOTimeString);
return new Date(newTime.getTime() - (offsetInMinutes * 60000));
}

// localIsoDate: 2017-05-04T18:25:11.378Z Date object
function formatTime(localIsoDate) {
function z(n){return (n<10?'0':'')+n}
var hh = localIsoDate.getUTCHours();
var mm = localIsoDate.getUTCMinutes();
var ss = localIsoDate.getUTCSeconds();
return z(hh)+':'+z(mm)+':'+z(ss);
}

var timeString = '2017-05-05T00:25:11.378Z';
var offset = 360;

console.log(formatTime(isoDateToLocalDate(timeString, offset)))

ECMAScript 时区符号与通常的约定相反。如果客户端时区偏移量为 +0600,则其主机将显示 -360。

关于javascript - 将本地化 ISO 日期格式设置为 hh :mm:ss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43858352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com