【发布时间】:2016-08-14 11:57:43
【问题描述】:
我是 JavaScript 新手,已经做了一些研究,但是我找不到相对简单的问题的直接解决方案。我有以下变量:
var recordDate = '2016-04-20 17:52:33';
我需要在几秒钟内了解 now 和 recordDate 之间的区别。实现它的最有效方法是什么?
【问题讨论】:
标签: javascript
我是 JavaScript 新手,已经做了一些研究,但是我找不到相对简单的问题的直接解决方案。我有以下变量:
var recordDate = '2016-04-20 17:52:33';
我需要在几秒钟内了解 now 和 recordDate 之间的区别。实现它的最有效方法是什么?
【问题讨论】:
标签: javascript
先尝试将recordDate转换为日期对象
var match = recordDate.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/);
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]);
var currentDate = new Date();
var differenceInSeconds = Math.abs(date.getTime() - currentDate.getTime())/1000;
演示
var recordDate = '2016-04-20 17:52:33';
var match = recordDate.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/);
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]);
alert(date.toString());
var currentDate = new Date();
var differenceInSeconds = Math.abs(date.getTime() - currentDate.getTime())/1000;
alert(differenceInSeconds);
【讨论】:
new Date(STR) 会为我们做这件事。使用表达式比new Date() 有什么优势吗?
Date.parse() 和规范 ecma-international.org/ecma-262/6.0/#sec-date.parse 和 ecma-international.org/ecma-262/6.0/…(最后注),它依赖于实现 stackoverflow.com/questions/2587345/…
Invalid Date 输出 - new Date("2234 23 33");
var date 设置为今天,而不是 2016-04-20。
这样设置日期记录:
var recordDate = new Date('2016-04-20 17:52:33');
var currentTime = new Date();
然后这样计算:
(currentTime - recordDate) / 1000 = {Seconds in between}
补充说明:
我不使用abs 的其他解释是因为它看起来像在stackoverflow 中显示的目的-edited 5 seconds ago 或类似的位置,当currentTime 永远不会少于记录日期和因此减少了一次计算和依赖。
【讨论】: