此问题已在此处找到答案:
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-日期/以获取更多信息。
2条答案
按热度按时间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?
2skhul332#
重新组织代码,使日期值严格存储为
moment
物体。只有当您实际需要字符串时,才能转换为字符串。避免将这些字符串转换回moment
物体。相反,存储并重用原始文件moment
对象现在,你唯一可能得到警告的时间是
request.body.a
不遵循已知的日期时间格式。为防止出现这种情况,请使用已知的非歧义格式(如iso:
这是极少数有理由转换为字符串然后再转换回对象的情况之一:使用与所涉及的媒体配合良好的格式传输信息。