【发布时间】:2020-08-28 21:20:13
【问题描述】:
我需要跟踪用户执行一项任务的时间。因此,我想获得用户登录时间与当前时间之间的确切时间差。用户登录的时间来自数据库。
*值得注意的是我需要在UTC工作。
从数据库中它是这样的,它已经在 UTC: 2020-05-12 18:04:25
这就是我或多或少尝试做的事情:
let timer = Math.abs(Date.now() - new Date(timeFromDataBase).getTime());
let minutes = Math.floor(timer / 60000);
let seconds = ((timer % 60000) / 1000).toFixed(0);
毫无疑问,分钟和秒的数量需要增加,但由于某种原因,它们对我来说一直在减少(并且转动 date.now() 和周围的其他变量不是解决方案)!我将附上我的控制台日志的图片(这样您就可以看到数字是如何下降的,即使经过了更多的时间,它们应该会上升):
我显然错过了一些东西,但我看不到什么。我认为这可能是 Date.now() 给了我本地时间的毫秒数,而我需要它们的 UTC 时间(如果是这种情况,我仍然找不到方法)。
【问题讨论】:
-
为什么不直接从数据库中输出 UTC 时间戳?
-
让 timer = Math.abs(Date.now() - new Date(timeFromDataBase).getTime());你能提供一个 ""timeFromDataBase"" 的样本值吗,你正在使用?
-
"2020-05-12 18:04:25" 不是 ECMA-262 支持的格式,因此解析取决于实现。至少一个当前浏览器将返回无效日期,请参阅Why does Date.parse give incorrect results? 如果正确解析,它将被视为本地,而不是 UTC。您应该手动将其解析为 UTC,然后从
Date.now()中减去它。将示例代码和数据作为文本而不是图像发布。
标签: javascript date time timezone utc