如何读取时间戳,以及如何计算两个时间戳的差值?

5

我有以下代码来获取时间戳和当前时间戳。我将它们相减以获取它们之间的差异,但是我得到一个类似于123456的数字,我无法理解这个数字代表多少。我想检查这两个日期之间的差异是否小于一小时,怎么办?

final_time = new Date(2013, 11, 11, 11, 11);
c_date = new Date();
offset_time = c_date.getTimezoneOffset();
var n1 = Math.abs(offset_time);
current_date = new Date(c_date.getTime() - n1 * 60 * 1000);

alert(current_date-final_time);

运行您的代码会得到...2598440754毫秒,相当于721小时。(如果将结尾处的减法交换以得到正数,则为c_date.getTime() - final_time.getTime())。只需取出它并计算是否大于“60 * 60 * 1000”。只需查看下面的“codebox”的答案,比我的评论更优雅。 - jeff porter
2个回答

8

如果你这样做:

你可以在毫秒级别上得到两个日期之间的差异:

var diffInMillis = c_date.getTime() - final_time.getTime()

要确定是否少于1小时,您可以执行以下操作:
var isLessThan1Hour = diffInMillis < 60 * 60 * 1000;

但是它会影响日期吗?我的意思是,如果我想减去两个日期? 这段代码适用于不同小时时间的今天日期,但它适用于两个不同的日期吗? - Basel
是的,getTime() 方法的命名有些令人困惑 - 它获取从1970年1月1日午夜到指定日期和时间之间的毫秒数。 - codebox
请问一下,这个1000代表什么意思? - Basel
1000将秒转换为毫秒。60 * 60 * 1000可以得到1小时内的毫秒数。 - codebox
抱歉,但每次我警告isLessThan1Hour时,它都会给我一个错误,即使我设置了一个相差一分钟的日期,您能检查一下吗? - Basel

0

不要直接相减时间戳,而是尝试计算日期之间的差异,从中可以单独获取小时数。然后可以进行简单的数学运算来计算差异。

这是一种更清晰和可维护的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接