查找时区偏移量和 add/subtract 到 javascript 中的当前时间

Find offset in time zone and add/subtract to current time in javascript

我目前正在研究系统必须在他们的时区自动呼叫客户的方法。

假设客户在“Africa/Blantyre”时区,而我在“Asia/Jakarta”时区,客户说在 7 P.M 打电话,那么我需要将时间存储在数据库中,系统必须调用他。

我想到的方法是在两个时区(“Africa/Blantyre”和“Asia/Jakarta”)之间获取偏移量,然后在“[=19=”中获取7 P.M ]”,最后 add/subtract 时间的偏移量,这就是我将如何获得“Africa/Blantyre”的 7.PM 时间。但是我不确定如何实现它?

我想你可以通过这个网站获取时差数据。至于方法,你可以制作一个json文件,通过它添加所有国家和他们的时间,或者通过api,你可以通过其中一个计算时差和计算时间的网站找到它区域

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

您可以:

  1. 暂时创造一个时刻
  2. 将时区设置为Africa/Blantyre
  3. 将时间设置为所需的布兰太尔当地时间
  4. 将时区设置为Asia/Jakarta
  5. 显示雅加达时间

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

所以在将时区设置为 Africa/Blantyre 后,将时间设置为 19:00 将其设置为布兰太尔的 19:00。将时区更改为雅加达也不会更改基础时间值,它只是意味着生成的时间戳是针对雅加达的。

下面是一些代码:

// 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()
);
<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>