计算两个时间戳之间的差值并获取差值的Unix时间戳

3
我希望能够计算两个日期时间之间的差异,一个日期是由用户提交的,另一个日期是当前时间:

user submitted time - now = difference in unix

用户提交的时间格式为:
2014-03-26 10:52:00

感谢您的帮助。
2个回答

4

您可以通过使用getTime()来实现这一点,该函数会返回毫秒数。

var ds = "2014-03-26 10:52:00"; 
var newDate = new Date(ds).getTime(); //convert string date to Date object
var currentDate = new Date().getTime();
var diff = currentDate-newDate;
console.log(diff);

有时在解析日期字符串时可能会出现跨浏览器兼容性问题,因此最好像这样解析:
var ds = "2014-03-26 10:52:00";
var dateArray = ds.split(" ");  // split the date and time 
var ds1 = dateArray[0].split("-"); // split each parts in date
var ds2 = dateArray[1].split(":"); // split each parts in time
var newDate = new Date(ds1[0], (+ds1[1] - 1), ds1[2], ds2[0], ds2[1], ds2[2]).getTime(); //parse it
var currentDate = new Date().getTime();
var diff = currentDate - newDate;
console.log(diff); //timestamp difference

1
谢谢,这就是我正在寻找的解决方案。我会尝试并告诉你结果。 - user007
1
@user007 忘记添加秒了。然后更改这一行 var newDate = new Date(ds1[0], (+ds1[1] - 1), ds1[2], ds2[0], ds2[1]).getTime(); - Praveen
1
@user007 嗯好的,让我们来看看 http://jsfiddle.net/praveen_jegan/LVmyj/1/ ,尝试使用不同的值并告诉我哪一个失败了。 - Praveen
1
哦,现在它可以工作了,原因是由于负结果。因为用户输入的时间是未来的时间。谢谢,你的解决方案很完美。 - user007
1
@user007 这取决于情况,有些人使用13位的Unix时间戳,而另一些人则使用10位的,称为Unix纪元时间戳 - Praveen
显示剩余4条评论

1
你可以使用MomentJS库。
 var user_submited_time = moment('2014-03-26 10:52:00');
 var now = moment();
 var value = user_submited_time - now;

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