首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在时区查找偏移量,并在javascript中添加/减去当前时间

在时区查找偏移量,并在javascript中添加/减去当前时间
EN

Stack Overflow用户
提问于 2022-04-23 00:05:32
回答 2查看 193关注 0票数 0

我目前正在研究一种方法,在这种方法中,系统必须在其时区自动调用客户端。

假设客户在“非洲/布兰太尔”时区,而我在“亚洲/雅加达”时区,客户说下午7点打电话给他,那么我需要把时间存储在db中,系统必须打电话给他。

我想过的方法是在两个时区(“非洲/布兰太尔”和“亚洲/雅加达”)之间得到抵消,然后在“亚洲/雅加达”中得到下午7点,最后加/减去偏移到时间,这就是我如何获得下午7点的“非洲/布兰太尔”的时间。但我不知道如何才能实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-23 11:22:55

您可以:

目前,Africa/Blantyre

  • Set

  • 将时区设置为Asia/Jakarta

  • Display,时间设置为,时间设置为所需的布兰太尔本地时间,
  1. 将时区设置为Asia/Jakarta
  2. Display,时区设置为雅加达的

在内部,矩对象使用内置日期对象的一个实例,该实例具有一个ECMAScript时间值,该值表示单个时刻作为与ECMAScript时代(1970年1月1日)的偏移量。更改时区只会更改用于操作和显示日期的计算,而不会更改时间值。

因此,在将时区设置为非洲/布兰太尔后,将时间设置为19:00在布兰太尔设置为19:00。将时区更改为雅加达也不会更改底层的时间值,这只意味着生成的时间戳是针对雅加达的。

下面是一些代码:

代码语言:javascript
运行
复制
// First get a moment for "now"
let mBlantyre = moment();

// Set the timezone to Africa/Blantyre
mBlantyre.tz('Africa/Blantyre');

// Set the time to 7 pm
mBlantyre.startOf('day').hour(19);

// Copy the moment object
mJakarta = moment(mBlantyre);

// Set the timezone to Asia/Jakarta
mJakarta.tz('Asia/Jakarta');

// Display as timestamps
console.log(
  'Africa/Blantyre: ' + mBlantyre.format() +
  '\nAsia/Jakarta   : ' + mJakarta.format()
);
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data-10-year-range.min.js"></script>

票数 1
EN

Stack Overflow用户

发布于 2022-04-23 00:16:35

我想你可以通过这个网站获取时差数据。至于方法,您可以创建一个json文件,通过该文件添加所有国家及其时间,或者通过api,您可以通过其中一个站点找到它,用于计算时差和计算时区。

https://www.calculator.net/time-zone-calculator.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71975780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档