微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用给定时区偏移量的时刻获取日期和时间

如何解决如何使用给定时区偏移量的时刻获取日期和时间

{
    "time": 1627375726.8367202,"tzoffset": -25200,"ok": 1
}

使用上面的 JSON 我需要获取日期、时间和时区。我尝试了很多方法,但都没有成功。有没有办法获取日期、时间和时区。我正在使用 JavaScript。

谢谢,

解决方法

看看那里Documentation

这里有一个小例子

moment.parseZone("2013-01-01T00:00:00-13:00").utcOffset(); // -780 ("-13:00" in total minutes)
,

我们可以使用您指定的 unix 时间和偏移量来使用 moment.utcOffset 函数获取当前日期和时间。我们必须将您的 tzoffset 除以 60,因为它(大概)以秒为单位,而 moment 需要分钟。

通常不可能获得唯一的时区值,因为您的 tzoffset 将被多个区域共享,我们能做的最好的事情就是获取以下列表:

const input = {
    "time": 1627375726.8367202,"tzoffset": -25200,"ok": 1
};

console.log("UTC time:",moment.unix(input.time).utc().format('YYYY-MM-DD HH:mm'))
console.log("Time in Timezone:",moment.unix(input.time).utcOffset(input.tzoffset / 60).format('YYYY-MM-DD HH:mm'))
console.log("Time in Timezone (with offset):",moment.unix(input.time).utcOffset(input.tzoffset / 60).format())
console.log("Possible timezones:",getPossibleTimezones(input.time,input.tzoffset))

function getPossibleTimezones(time,tzoffset) {
    return moment.tz.names().filter(zone => moment.tz(moment.unix(time),zone).utcOffset() === input.tzoffset / 60);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js" referrerpolicy="no-referrer"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.js"></script> 

我也会考虑使用 luxon,因为 moment 现在正在维护中。

我们可以使用 FixedOffsetZone 来获取该区域的本地时间:

const input = {
    "time": 1627375726.8367202,"ok": 1
};

let { DateTime,FixedOffsetZone } = luxon;

let zone = new FixedOffsetZone(input.tzoffset / 60)

console.log("UTC time:",DateTime.fromSeconds(input.time,{ zone: 'UTC' }).toISO())
console.log("Time in timezone:",{ zone: zone }).toISO())
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.0.1/luxon.min.js" integrity="sha512-bI2nHaBnCCpELzO7o0RB58ULEQuWW9HRXP/qyxg/u6WakLJb6wz0nVR9dy0bdKKGo0qOBa3s8v9FGv54Mbp3aA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。