【问题标题】:JavaScript calculate difference in seconds between to datetimeJavaScript 计算与日期时间之间的秒数差异
【发布时间】:2016-08-14 11:57:43
【问题描述】:

我是 JavaScript 新手,已经做了一些研究,但是我找不到相对简单的问题的直接解决方案。我有以下变量:

var recordDate = '2016-04-20 17:52:33';

我需要在几秒钟内了解 now 和 recordDate 之间的区别。实现它的最有效方法是什么?

【问题讨论】:

标签: javascript


【解决方案1】:

先尝试将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);

【讨论】:

  • @Guru, new Date(STR) 会为我们做这件事。使用表达式比new Date() 有什么优势吗?
  • @RayonDabre Date() 构造函数的实现是按照 Date.parse() 和规范 ecma-international.org/ecma-262/6.0/#sec-date.parseecma-international.org/ecma-262/6.0/…(最后注),它依赖于实现 stackoverflow.com/questions/2587345/…
  • @RayonDabre 如果值无效(无效日期),它将给出Invalid Date 输出 - new Date("2234 23 33");
  • @RayonDabre 这是真的,至少在 chrome 上它工作正常。只是不能保证它在所有浏览器上都能正常工作(根据我附加的最后一个链接)
  • 它在 chrome 上确实不能正常工作。 var date 设置为今天,而不是 2016-04-20
【解决方案2】:

这样设置日期记录:

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 永远不会少于记录日期和因此减少了一次计算和依赖。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 2016-06-22
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2021-11-25
    相关资源
    最近更新 更多