我目前正在研究一种方法,在这种方法中,系统必须在其时区自动调用客户端。
假设客户在“非洲/布兰太尔”时区,而我在“亚洲/雅加达”时区,客户说下午7点打电话给他,那么我需要把时间存储在db中,系统必须打电话给他。
我想过的方法是在两个时区(“非洲/布兰太尔”和“亚洲/雅加达”)之间得到抵消,然后在“亚洲/雅加达”中得到下午7点,最后加/减去偏移到时间,这就是我如何获得下午7点的“非洲/布兰太尔”的时间。但我不知道如何才能实现这一点?
发布于 2022-04-23 11:22:55
您可以:
目前,Africa/Blantyre
在内部,矩对象使用内置日期对象的一个实例,该实例具有一个ECMAScript时间值,该值表示单个时刻作为与ECMAScript时代(1970年1月1日)的偏移量。更改时区只会更改用于操作和显示日期的计算,而不会更改时间值。
因此,在将时区设置为非洲/布兰太尔后,将时间设置为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>
发布于 2022-04-23 00:16:35
我想你可以通过这个网站获取时差数据。至于方法,您可以创建一个json文件,通过该文件添加所有国家及其时间,或者通过api,您可以通过其中一个站点找到它,用于计算时差和计算时区。
https://stackoverflow.com/questions/71975780
复制相似问题