Javascript 返回当前日期和给定日期之间的差异,并附带条件
我正在尝试一个非常简单的想法,但很难实现 我想以秒为单位返回两个给定日期和时间之间的差值。注意:我希望在这些条件下得到相同的结果:Javascript 返回当前日期和给定日期之间的差异,并附带条件,javascript,Javascript,我正在尝试一个非常简单的想法,但很难实现 我想以秒为单位返回两个给定日期和时间之间的差值。注意:我希望在这些条件下得到相同的结果: 不管我们是在Chrome还是Firefox上测试。在这两种情况下,它应该返回相同的结果 无论最终用户是否将其系统中的时区设置为不同的时区 所以我试了一下: //在下面输入您的自定义日期 施工日期=新日期('2020-6-24 14:22:00');//设定结束时间 const dif=(date.getTime()/1000)-(new date().getT
- 不管我们是在Chrome还是Firefox上测试。在这两种情况下,它应该返回相同的结果
- 无论最终用户是否将其系统中的时区设置为不同的时区
//在下面输入您的自定义日期
施工日期=新日期('2020-6-24 14:22:00');//设定结束时间
const dif=(date.getTime()/1000)-(new date().getTime())/1000);
控制台日志(dif)代码>使用Date.now()
而不是new Date()
可能更容易。这将返回可以轻松减去的毫秒数
只是别忘了在计算机上测量时间很奇怪。由于各种原因,您可以使用结束-开始<0
。处理日期和时间肯定会有很多问题,包括时区、闰年、闰秒和夏令时
然而,这里发生的事情似乎并非如此。请记住,JavaScript日期对象内部使用世界时(UTC),因此,一旦正确存储了时间,无论时区如何,都应该进行比较
我使用了这个函数:
const dateDiffSeconds = function(date1, date2) {
return Math.round(Math.abs(date1.getTime()-date2.getTime())/1000);
}
请注意,我正在使用Math.round()
和Math.abs
进行取整,因此哪个日期更大并不重要。值得注意的是,您甚至可以不使用getTime()
直接减去日期
当我在Firefox、Chrome和Node中使用各种测试运行它时,我得到了一致的结果,包括当我改变时区时
要运行的一个测试是:不使用当前时间,而是比较两个预选的常量日期
我怀疑您在以下一个或两个方面有问题:
时区表示法:以UTC时间指定日期。如果希望德黑兰的用户看到与哈瓦那相同的时差,则必须确保发送给他们的日期相同。如果发送的日期未指定时区,则两个客户端都会将日期转换为本地时间,这意味着它们将被时区分隔。而是以UTC时间发送日期
浏览器同步:在两个不同的浏览器中测试结果时,也可能没有足够紧密地保持同步。当我测试它时,我使用setInterval()
和一个低超时设置(远低于一秒)来比较当前时间和测试日期。如果您只是手动刷新浏览器,时间可能不一样
好啊谢谢你的回答。现在再加一个。。。我会测试这个。。。