Javascript之parseInt注意事项一例
来源:互联网 发布:郑州网络布线 编辑:程序博客网 时间:2024/05/14 02:21
参与一个项目,在一个功能中需要在前台提取2个日期(beginDate,endDate)的月份差进行计算,日期格式为yyyy-mm-dd,然后没怎么细想就写了一段代码如下
var beginYear=beginDate.substr(0,4);var beginMonth=parseInt(beginDate.substr(5,2));var endYear=endDate.substr(0,4);var endMonth= parseInt(endDate.substr(5,2));var yearGap =endYear-beginYear;var monthGap=endMonth-beginMonth; var monthCount= yearGap*12+1+monthGap;然后稍微测试了几个日期,没有问题,就发布了,结果客户在实际使用中发现,大部分情况计算正确,但是唯独有一个日期的计算死活不正确,就是2016-09-30,其余的都没有问题,我就想怎么可能呢,于是就就测试了下:
for(var i=0;i<=9;i++){var val ='0'+i;alert(val); alert(parseInt(val));}
居然 parseInt('09')=0
彻底颠覆我了的三观,仔细一查资料才发现,原来是自己的认识不清,W3School上的说明如下:
parseInt(string, radix)
可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
原因找到了,解决办法也就有了,修改如下:
var beginYear=beginDate.substr(0,4);var beginMonth=parseInt(beginDate.substr(5,2),10);var endYear=endDate.substr(0,4);var endMonth= parseInt(endDate.substr(5,2),10);var yearGap =endYear-beginYear;var monthGap=endMonth-beginMonth; var monthCount= yearGap*12+1+monthGap;
OK!
0 0
- Javascript之parseInt注意事项一例
- JavaScript的parseInt,parseFloat等函数注意事项
- parseInt 的注意事项
- JavaScript 全局对象之parseInt()函数与parseFloat()函数
- javascript中的parseInt函数
- JavaScript的parseInt
- 关于javascript中的parseInt
- JavaScript parseInt() 函数
- javascript中parseInt函数
- javascript parseInt is broken
- JavaScript 的 parseInt('08')
- javascript的parseInt函数
- JavaScript 的 parseInt('08')
- 关于javascript parseInt函数
- 关于JavaScript parseInt() 函数
- JavaScript parseInt() 函数
- javascript中parseInt
- javascript中parseInt函数
- 【转】java.nio.ByteBuffer 类 缓冲区
- MyEclipse2014 常用设置以及优化
- 写css的一些小技巧
- 二分-1100
- UIWebView 实现图片适应屏幕的宽度 文字内容的大小不变
- Javascript之parseInt注意事项一例
- 二分-0011
- Android 学习笔记之十 Listview 优化原理
- Android学习十二周_Android性能优化
- 图像算法研究---索引图像旋转缩放锯齿问题
- perl 类里的函数调用其他类的函数
- UIWebView 1,修改背景的暗灰色 2,周边的灰色 3, 自带的链接点击事件
- 在windows下安装flex和bison
- 二分-浮点