Javascript 为什么这一年被归为南?

Javascript 为什么这一年被归为南?,javascript,momentjs,Javascript,Momentjs,我正在尝试验证日期,规则如下: 非闰年或无效日期 年份必须大于1868年 我正在使用此验证,我就是这样做的: 函数验证(){ var值=力矩('33/33/1986','MM/DD/YYYY'); 变量年=时刻('33/33/1986','MM/DD/YYYY')。年(); console.log(值) 控制台日志(年) if(value.isValid()&&year>=1868){ 返回true; } } 验证() 33/33/1986不是momentjs有效对象,因为日期和月份无效

我正在尝试验证日期,规则如下:

  • 非闰年或无效日期
  • 年份必须大于1868年
我正在使用此验证,我就是这样做的:

函数验证(){
var值=力矩('33/33/1986','MM/DD/YYYY');
变量年=时刻('33/33/1986','MM/DD/YYYY')。年();
console.log(值)
控制台日志(年)
if(value.isValid()&&year>=1868){
返回true;
}
}
验证()

33/33/1986
不是momentjs有效对象,因为日期和月份无效


您应该尝试使用正确的日期和月份,如
12/12/1986

33/33/1986
不是momentjs有效对象,因为日期和月份无效


您应该尝试使用正确的日期和月份,如1986年12月12日,您不能解析不存在的日期。既没有第33天也没有第33个月。如果使用有效日期,代码将正常运行。

您无法解析不存在的日期。既没有第33天也没有第33个月。如果您使用有效日期,您的代码将正常运行。

First
moment
不喜欢在没有指定格式的情况下为您解析日期,也不喜欢解析错误日期(我们只有12个月,最多31天,那么什么是
33/33/
?)

试试这个:

var year=时刻('12/20/1986','MM/DD/YYYY')。年();
如果(年份>=1868){
console.log('YAY!')
}

首先
时刻
不喜欢在没有指定格式的情况下为您解析日期,也不喜欢解析糟糕的日期(我们只有12个月,最多31天,那么什么是
33/33/
?)

试试这个:

var year=时刻('12/20/1986','MM/DD/YYYY')。年();
如果(年份>=1868){
console.log('YAY!')
}
MomentJS在调用提供格式的
moment()
时提供。你可以用它来猜一猜今年是什么时候

parsingFlags
包含一个
parsedDateParts
数组,该数组包含按降序解析的值,第一个值是年,第二个值是月,等等

显然,如果有人进入了无效年份,那么所有的赌注都被取消了

下面的代码显示了所有的
parsingFlags
,然后输出在
parsedDateParts
中找到的年份

函数验证(){
var值=力矩('33/33/1986','MM/DD/YYYY');
变量年份=时刻('33/33/1986','MM/DD/YYYY')。parsingFlags()。parsedDateParts[0];
console.log(矩('33/33/1986','MM/DD/YYYY').parsingFlags())
控制台日志(年)
if(value.isValid()&&year>=1868){
返回true;
}
}
验证()

MomentJS在调用提供格式的
moment()
时提供。你可以用它来猜一猜今年是什么时候

parsingFlags
包含一个
parsedDateParts
数组,该数组包含按降序解析的值,第一个值是年,第二个值是月,等等

显然,如果有人进入了无效年份,那么所有的赌注都被取消了

下面的代码显示了所有的
parsingFlags
,然后输出在
parsedDateParts
中找到的年份

函数验证(){
var值=力矩('33/33/1986','MM/DD/YYYY');
变量年份=时刻('33/33/1986','MM/DD/YYYY')。parsingFlags()。parsedDateParts[0];
console.log(矩('33/33/1986','MM/DD/YYYY').parsingFlags())
控制台日志(年)
if(value.isValid()&&year>=1868){
返回true;
}
}
验证()

  • 为什么年份包含NaN值?
由于
时刻('33/33/1986','MM/DD/YYYY')。isValid()
false
,文件的时刻部分明确说明:

如果某个时刻无效,则其行为类似于浮点运算中的NaN

这些函数返回null或NaN,并具有某种结构:

  • 无效。get(unit)
    与所有其他命名getter一样返回null
  • 如果您有机会知道一种更好的方法来进行相同的验证,请随时在此处发布
您可以使用(在解析输入时添加
true
作为第三个参数)改进验证,如以下代码段所示:

功能验证(输入){
var值=力矩(输入'MM/DD/YYYY',真);
var year=value.year();
if(value.isValid()&&year>=1868){
返回true;
}
返回false;
}
控制台日志(验证('33/33/1986')
  • 为什么年份包含NaN值?
由于
时刻('33/33/1986','MM/DD/YYYY')。isValid()
false
,文件的时刻部分明确说明:

如果某个时刻无效,则其行为类似于浮点运算中的NaN

这些函数返回null或NaN,并具有某种结构:

  • 无效。get(unit)
    与所有其他命名getter一样返回null
  • 如果您有机会知道一种更好的方法来进行相同的验证,请随时在此处发布
您可以使用(在解析输入时添加
true
作为第三个参数)改进验证,如以下代码段所示:

功能验证(输入){
var值=力矩(输入'MM/DD/YYYY',真);
var year=value.year();
if(value.isValid()&&year>=1868){
返回true;
}
返回false;
}
控制台日志(验证('33/33/1986')

A
return
语句需要一个
函数
否,如果日期无效,则不应获取年份;这不是它的工作原理。因为1986年没有第32个月的第33天。我在1986年还活着,我可以告诉你,那一年没有第33个月或第33天