需要以秒为单位找出两个日期之间的差异

wi3ka0sx  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(298)

此问题已在此处找到答案

moment.js中的弃用警告-不是公认的iso格式(12个答案)
五小时前关门了。
我需要找出两个日期在几秒钟内的差异,我从前端传递一个日期,另一个日期是当前日期,但我得到了错误
这是我在前端的代码

var a =moment().format('MM/DD/YYYY HH:mm:ss')

下面是我需要比较的nodejs代码

var sesdate=moment(request.body.a).format("DD/MM/YYYY HH:mm:ss")
    var startDate = moment(sesdate, "DD/MM/YYYY HH:mm:ss");
    var currenDate = moment(new Date()).format("DD/MM/YYYY HH:mm:ss");
    var endDate = moment(currenDate, "DD/MM/YYYY HH:mm:ss");
    var result = 'Diff: ' + endDate.diff(startDate, 'seconds');

但我得到了预期的输出,但得到了警告消息
弃用警告:提供的值不是可识别的rfc2822或iso格式。moment构造回到js date(),这在所有浏览器和版本中都不可靠。不鼓励使用非rfc2822/iso日期格式。请参阅http://momentjs.com/guides/#/warnings/js-日期/以获取更多信息。

0kjbasz6

0kjbasz61#

如果已经有两个javascript datetime对象,则可以使用 .getTime() 方法获取自1970年以来的毫秒数。将其中一个数减去1000以转换为秒。如果不能保证其中一个始终在另一个之后,则可能需要取绝对值。
https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/date/gettime
或者,如果您想坚持使用时刻代码,则需要将时间格式转换为rfc2822/iso兼容的格式。此问题的顶部答案将向您展示如何做到这一点:
如何在moment.js中将日期格式化为iso 8601?

2skhul33

2skhul332#

重新组织代码,使日期值严格存储为 moment 物体。只有当您实际需要字符串时,才能转换为字符串。避免将这些字符串转换回 moment 物体。相反,存储并重用原始文件 moment 对象

var startDate = moment(request.body.a);
var sesdate = startDate.format("DD/MM/YYYY HH:mm:ss");
var endDate = moment();
var currentDate = endDate.format("DD/MM/YYYY HH:mm:ss");
var result = 'Diff: ' + endDate.diff(startDate, 'seconds');

现在,你唯一可能得到警告的时间是 request.body.a 不遵循已知的日期时间格式。
为防止出现这种情况,请使用已知的非歧义格式(如iso:

var a = moment().toISOString(true);

这是极少数有理由转换为字符串然后再转换回对象的情况之一:使用与所涉及的媒体配合良好的格式传输信息。

相关问题