IF 函数是否删除了 javascript 中的日期对象?
Is the IF function removing the date object in javascript?
我花了一个小时寻找答案并尝试了不同的东西,所以我很感激这里的任何帮助。
以下代码非常适合查找某人的 B 部分生效日期。但是,当某人的生日真的是一个月的 1 号时,将使用 'if' 函数,我无法再格式化和写入日期。几乎就像 'partB_eff' 不再是一个日期对象。 (我是新手,所以这部分可能是我编的。)
我收到错误“TypeError:partB_eff.toLocaleDateString 不是 AutoFill_6_Step_Checklist(代码:24:27)处的函数”
我该如何解决?
let birthday = new Date(e.values[2]);
//this is a date entered from a google form
let bdayCopy = new Date(birthday);
//I created this since I'll be using .setMonth(), and I don't want to change the original date of the birhtday
let bday65 = new Date(bdayCopy.setMonth(bdayCopy.getMonth()+780));
//finds the 65th birthday
let partB_eff = new Date(bdayCopy.setDate(01));
//find's the Medicare part B effective date (the 1st of the month someone turns 65)
if(birthday.getDate()==1){
partB_eff = partB_eff.getMonth-1;
//if the person's birthday is really on the 1st of the month, the part b effective date is the 1st of the month prior. partB_eff must be converted
}
partB_eff = partB_eff.toLocaleDateString('en-us',{year:"numeric",month: "short",day:"numeric"});
//format partB_eff so that it looks nice on paper
partB_eff = partB_eff.getMonth-1;
并不像您认为的那样。它所做的是从您的日期对象中获取 vound function getDate,并尝试从中减去一个。在任何其他语言中,试图对函数进行减法运算都是类型错误,但 Javascript 是 Javascript 并且允许对几乎任何类型进行数字运算。函数减去一个数在JS中是NaN
。 NaN
没有名为 toLocaleString
的方法,因此出现错误。
有趣的是,你在上面用 bdayCopy.setMonth(bdayCopy.getMonth()+780)
正确地做了同样的操作
在这里做同样的事情
bdayCopy = new Date(bdayCopy.setMonth(bdayCopy.getMonth()-1));
还有一些重要的概念。 Javascript 中的 if
是 不是 函数。 if
是开始条件语句的关键字。你不能做任何你可以用 if 函数做的事情。您不能调用它或将其分配给变量或将 ot 作为函数参数传递。清楚地理解函数是什么是你需要做的事情才能在 JS 或任何其他语言中工作。
最后,如果您在 JS 中进行日期数学运算,我强烈建议您使用像 DateFns 或 Moment 这样的日期库。 Javascript 原生日期 API 可能是所有语言中设计最差的日期 API。
我花了一个小时寻找答案并尝试了不同的东西,所以我很感激这里的任何帮助。
以下代码非常适合查找某人的 B 部分生效日期。但是,当某人的生日真的是一个月的 1 号时,将使用 'if' 函数,我无法再格式化和写入日期。几乎就像 'partB_eff' 不再是一个日期对象。 (我是新手,所以这部分可能是我编的。)
我收到错误“TypeError:partB_eff.toLocaleDateString 不是 AutoFill_6_Step_Checklist(代码:24:27)处的函数”
我该如何解决?
let birthday = new Date(e.values[2]);
//this is a date entered from a google form
let bdayCopy = new Date(birthday);
//I created this since I'll be using .setMonth(), and I don't want to change the original date of the birhtday
let bday65 = new Date(bdayCopy.setMonth(bdayCopy.getMonth()+780));
//finds the 65th birthday
let partB_eff = new Date(bdayCopy.setDate(01));
//find's the Medicare part B effective date (the 1st of the month someone turns 65)
if(birthday.getDate()==1){
partB_eff = partB_eff.getMonth-1;
//if the person's birthday is really on the 1st of the month, the part b effective date is the 1st of the month prior. partB_eff must be converted
}
partB_eff = partB_eff.toLocaleDateString('en-us',{year:"numeric",month: "short",day:"numeric"});
//format partB_eff so that it looks nice on paper
partB_eff = partB_eff.getMonth-1;
并不像您认为的那样。它所做的是从您的日期对象中获取 vound function getDate,并尝试从中减去一个。在任何其他语言中,试图对函数进行减法运算都是类型错误,但 Javascript 是 Javascript 并且允许对几乎任何类型进行数字运算。函数减去一个数在JS中是NaN
。 NaN
没有名为 toLocaleString
的方法,因此出现错误。
有趣的是,你在上面用 bdayCopy.setMonth(bdayCopy.getMonth()+780)
正确地做了同样的操作
在这里做同样的事情
bdayCopy = new Date(bdayCopy.setMonth(bdayCopy.getMonth()-1));
还有一些重要的概念。 Javascript 中的 if
是 不是 函数。 if
是开始条件语句的关键字。你不能做任何你可以用 if 函数做的事情。您不能调用它或将其分配给变量或将 ot 作为函数参数传递。清楚地理解函数是什么是你需要做的事情才能在 JS 或任何其他语言中工作。
最后,如果您在 JS 中进行日期数学运算,我强烈建议您使用像 DateFns 或 Moment 这样的日期库。 Javascript 原生日期 API 可能是所有语言中设计最差的日期 API。