JavaScript日期到时间戳计算在任何月份的第8天和第9天都不起作用

时间:2011-08-26 12:48:07

标签: javascript jquery date timestamp unix-timestamp

我有以下JavaScript:http://jsfiddle.net/5Hapw/

选择日期时,变量会提醒说时间戳 - 但是,在任何月份的第8天和第9天,时间戳总是错误的。

谁能看到我哪里出错?

提前致谢。

5 个答案:

答案 0 :(得分:4)

您的问题是将字符串解析为数字。如果你没有指定基数,并且字符串以零开头,它将被解析为八进制数字:

parseInt("017") === 15

parseInt("08") === 0 // because 8 is not a valid digit in octal numbers

解决方案是指定基数10:

parseInt("08", 10) === 8

更新了小提琴:http://jsfiddle.net/Guffa/5Hapw/6/

答案 1 :(得分:2)

如果你没有将第二个参数传递给parseInt(基础),javascript会猜测它。这可能是猜错了。将10输入作为所有parseInt调用的第二个参数(你可以删除从月份截断零的代码 - 偶然添加此代码以从月中截断零也将起作用)

更新了小提琴:http://jsfiddle.net/5Hapw/4/

答案 2 :(得分:1)

通过将其转换为数字,可以解决此问题 - 将parseInt(selection[0])替换为Number(selection[0])

http://jsfiddle.net/mblase75/5Hapw/5/

答案 3 :(得分:0)

实际上javascript在八进制值中解释这些变量,请使用将它们转换为十进制。我相信你正在使用一个字符串并将其解析为一个值。这样的事情。那么请做以下事情。

parseInt(month_val);

这是我用来检查有效日期的代码片段。

    var birthdate = element.value.split("-");
    var JDate = new Date(parseInt(birthdate[2],10), parseInt(birthdate[0],10) -1, parseInt(birthdate[1],10));
    valid = (parseInt(birthdate[0],10) - 1 == JDate.getMonth() && parseInt(birthdate[1],10) == JDate.getDate() && parseInt(birthdate[2],10) == JDate.getFullYear());
    return valid;

答案 4 :(得分:0)

我不知道您为什么尝试解析 date 参数(通过拆分)?参数 inst 包含下一个字段:

  • inst.selectedDay
  • inst.selectedMonth
  • inst.selectedYear
  • 以及更多......

    Date.UTC(inst.selectedYear,inst.selectedMonth,inst.selectedDay);