Javascript 比较两个日期时Moment.js弃用警告
我没有看到任何与我的用例匹配的SO线程。我试着比较两个日期,看它们是否匹配。如果没有,则显示一条错误消息。这两个日期的日期格式都是Javascript 比较两个日期时Moment.js弃用警告,javascript,momentjs,Javascript,Momentjs,我没有看到任何与我的用例匹配的SO线程。我试着比较两个日期,看它们是否匹配。如果没有,则显示一条错误消息。这两个日期的日期格式都是'MM/DD/YYYY'格式,唯一的例外是有时它们可能是'MM/DD/YYYY',而其他时间则是'M/D/yyyyy' 我可以让它工作,但不断得到一个不推荐的错误。我尝试使用moment.ISO_8601参数,但仍然得到不推荐的错误 if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date,
'MM/DD/YYYY'
格式,唯一的例外是有时它们可能是'MM/DD/YYYY'
,而其他时间则是'M/D/yyyyy'
我可以让它工作,但不断得到一个不推荐的错误。我尝试使用moment.ISO_8601
参数,但仍然得到不推荐的错误
if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date,
moment.ISO_8601 ) )
{
console.log("Both dates must match!");
}
else {
console.log("Dates match!");
}
不推荐的错误如下所示:
js:1弃用警告:提供的值不是可识别的RFC2822或ISO格式。moment构造回到js Date(),这在所有浏览器和版本中都不可靠。不鼓励使用非RFC2822/ISO日期格式,并将在即将发布的主要版本中删除
有没有一个干净的解决办法 我实际上没有看到这个问题 你能用小提琴演奏吗
var start_date = moment().format('MMM DD h:mm A');
var user_start_date = moment().format('MMM DD h:mm A');
if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date,
moment.ISO_8601 ) )
{
console.log("Both dates must match!");
}
else{
console.log("Dates match!");
}
我并不认为这是个问题 你能用小提琴演奏吗
var start_date = moment().format('MMM DD h:mm A');
var user_start_date = moment().format('MMM DD h:mm A');
if( !moment( start_date, moment.ISO_8601 ).isSame( user_start_date,
moment.ISO_8601 ) )
{
console.log("Both dates must match!");
}
else{
console.log("Dates match!");
}
无论是
'MM/DD/YYYY'
还是'M/D/yyyyy'
都不是See docs识别的符合ISO 8601的格式,请查看momentjs识别的ISO 8601格式。您必须指定'MM/DD/YYYY'
(或'M/D/YYYY'
)格式,而不是使用矩
您可以同时使用'MM/DD/YYYY'
和'M/D/YYYY'
。如果您正在使用,这是必需的。请注意:
从版本2.3.0开始,Moment使用一些简单的试探法来确定使用哪种格式。为了:
- 与无效的格式相比,更喜欢导致日期的格式
- 更喜欢解析更多字符串而不是更少,使用更多格式而不是更少格式的格式,即更喜欢更严格的解析
- 更喜欢数组中较早的格式,而不是较晚的格式
例如,使用['MM/DD/YYYY','MM/DD/YYYY']
,像01/10/2017
这样的模糊输入将始终解释为1月10日
下面是一个没有弃用警告的示例:
var开始日期='2017年11月25日';
var用户开始日期='2017年12月27日';
如果(!矩(开始日期,['MM/DD/YYYY','M/D/YYYY']).isname(矩(用户开始日期,['MM/DD/YYYY','M/D/yyyyy']))
{
log(“两个日期必须匹配!”);
}
否则{
日志(“日期匹配!”);
}
无论是'MM/DD/yyyyy'
还是'M/D/yyyyy'
都不是See文档识别的符合ISO 8601的格式,以查看momentjs识别的ISO 8601格式。您必须指定'MM/DD/YYYY'
(或'M/D/YYYY'
)格式,而不是使用矩
您可以同时使用'MM/DD/YYYY'
和'M/D/YYYY'
。如果您正在使用,这是必需的。请注意:
从版本2.3.0开始,Moment使用一些简单的试探法来确定使用哪种格式。为了:
- 与无效的格式相比,更喜欢导致日期的格式
- 更喜欢解析更多字符串而不是更少,使用更多格式而不是更少格式的格式,即更喜欢更严格的解析
- 更喜欢数组中较早的格式,而不是较晚的格式
例如,使用['MM/DD/YYYY','MM/DD/YYYY']
,像01/10/2017
这样的模糊输入将始终解释为1月10日
下面是一个没有弃用警告的示例:
var开始日期='2017年11月25日';
var用户开始日期='2017年12月27日';
如果(!矩(开始日期,['MM/DD/YYYY','M/D/YYYY']).isname(矩(用户开始日期,['MM/DD/YYYY','M/D/yyyyy']))
{
log(“两个日期必须匹配!”);
}
否则{
日志(“日期匹配!”);
}
你说得对,“弃用”警告不会出现在小提琴上。但不知道为什么。我知道我下载了moment.js的最新版本(实际上,点击了moment.js站点中的链接,打开了js文件,然后我将其复制到记事本中,并将其保存到我的文件夹中,名为moment.js)。我甚至确保完全关闭chrome浏览器(以清除任何缓存),然后再试一次,但它仍然显示出来。我确实使用console.log在我的应用程序中记录时获得的日期值更新了fiddle:@Dallas'MMM DD h:mm A'
不是ISO 8601认可的格式,您的代码在某些环境中可能会抛出“弃用警告”。您是对的-fiddle中不会出现“弃用”警告。但不知道为什么。我知道我下载了moment.js的最新版本(实际上,点击了moment.js站点中的链接,打开了js文件,然后我将其复制到记事本中,并将其保存到我的文件夹中,名为moment.js)。我甚至确保完全关闭chrome浏览器(以清除任何缓存),然后再试一次,但它仍然显示出来。我确实使用console.log在我的应用程序中记录时获得的日期值更新了小提琴:@Dallas'MMM DD h:mm A'
不是ISO 8601认可的格式,您的代码在某些环境中可能会抛出“弃用警告”。