gpt4 book ai didi

javascript - 如何使用 Date() 对象设置特定区域时区以正确计算两个事件之间的时间

转载 作者:行者123 更新时间:2023-11-28 03:40:08 28 4
gpt4 key购买 nike

我想用一些 JavaScript 构建一个网页,它可以计算两个事件(现在和 LastTime)之间的天数、小时、分钟和秒数。我的问题是:我正在使用这条线 var now = new Date().getTime();获取当前时间,看起来此方法使用您的计算机设置来获取 now变量,这是不需要的,因为如果我所在区域之外的人访问该页面,计数器将不会显示过去的实时时间,因为我的 JavaScript 正在获取他们的时区。

我在互联网上发现了一些代码,实际上可以从给定区域获取时间,但我正在努力将其集成到我的代码中。 var now = new Date().toLocaleString("pt-BR", {timeZone: "America/Sao_Paulo"});
now = new Date(now);

<h1>Time past since the last event: </h1>
<h2 id="demo"></h2>

<script>
var lastTime = new Date("July 27, 2019 00:00:00").getTime();

setInterval(function() {
var now = new Date().getTime();
var distance = now - lastTime;

var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);

document.getElementById("demo").innerHTML = days + " days, " + hours + " hours, " + minutes + " minutes and " + seconds + " seconds ";
}, 1000);
</script>

我想要的是我的now变量来获取特定区域时间(例如“美国/纽约”),并使计数器在访问我的页面的任何区域进行正确的数学运算。 Here's some codepen to make it easier .

提前致谢。

最佳答案

您可以使用moment.js功能可以解决您的所有问题。

  1. 如果您的事件时间位于任何特定时区,请首先将其转换为 utc 值。 moment.utc()
  2. 当用户连接到您的页面时,获取他/她的 UTC 时间。 moment.valueOf()
  3. 计算 2 个日期之间的持续时间。 moment.duration, moment.diff
  4. 您想要的格式持续时间。 duration-format

关于javascript - 如何使用 Date() 对象设置特定区域时区以正确计算两个事件之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57352969/

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