代码之家  ›  专栏  ›  技术社区  ›  Wesleyb2013

IF函数是否正在删除javascript中的日期对象?

  •  0
  • Wesleyb2013  · 技术社区  · 2 年前

    我花了一个小时寻找答案,尝试了不同的事情,所以我感谢这里的任何帮助。

    下面的代码非常适合查找某人的B部分生效日期。然而,当某人的生日真的在一个月的第一天时,“if”函数get就被使用了,我不再能够格式化和写入日期。这就像“partB_eff”不再是日期对象一样。(我是新手,所以我可能只是在编造这个角色。)

    我得到一个错误“TypeError:partB_eff.toLocaleDateString不是自动填充6_步骤_检查表中的函数(代码: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
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Nick Bailey    2 年前
    partB_eff = partB_eff.getMonth-1;
    

    不会像你想的那样。它所做的就是得到许可 作用 从日期对象中获取日期,并尝试从中减去一个。在任何其他语言中,试图对函数进行减法运算都是一种类型错误,但Javascript是Javascript,几乎可以对任何类型进行数值运算。在JS中,函数减去一个数字就是 NaN . 没有名为 toLocaleString 因此出现了错误。

    有趣的是,你用同样的方法正确地完成了上面的操作 bdayCopy.setMonth(bdayCopy.getMonth()+780) 在这里做同样的事情

    bdayCopy = new Date(bdayCopy.setMonth(bdayCopy.getMonth()-1));
    

    还有一些重要的概念。 if 在Javascript中是 一个函数。 如果 是启动条件语句的关键字。你不能用if函数做任何你能做的事情。不能调用它或将其分配给变量,也不能将ot作为函数参数传递。为了能够在JS或其他任何语言中工作,需要清楚地理解函数是什么。

    最后,如果你在用JS做日期数学,我强烈建议你使用DateFns或Moment这样的日期库。Javascript原生日期API可能是任何语言中设计最差的日期API。