有这么一个JavaScript函数,目的是想判断两个形式为“YYYY-MM-DD hh:mm:ss”或“YYYY/MM/DD hh:mm:ss”的字符串表示的日期的先后顺序,代码如下:
function dateToSecond(date) {
var regex = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var result = date.match(regex);
return parseInt(result[1]) * 12 * 30 * 24 * 60 * 60
+ parseInt(result[3]) * 30 * 24 * 60 * 60 + parseInt(result[4]) * 24 * 60 * 60
+ parseInt(result[5]) * 60 * 60 + parseInt(result[6]) * 60
+ parseInt(result[7]);
}
function isBefore(start, end) {
return dateToSecond(start) < dateToSecond(end);
}
这个函数看上去好像没错,但实际运行的时候就会出现很诡异的情况:用"2009-03-05 12:00:00"和"2009-03-07 12:00:00"作为参数,运行结果为true;但是用"2009-03-07 12:00:00"和"2009-03-09 12:00:00"作为参数,运行结果为false。
问题就出在parseInt()函数上:
引用
parseInt 方法
返回由字符串转换得到的整数。
parseInt(numString, [radix])
参数
numString
必选项。要转换为数字的字符串。
radix
可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
说明
parseInt 方法返回与保存在numString中的数字值相等的整数。如果numString的前缀不能解释为整数,则返回NaN(而不是数字)。
parseInt("abc") // 返回 NaN。
parseInt("12abc") // 返回 12。
可以用isNaN方法检测NaN。
因此,parseInt("08")和parseInt("09")的结果都为0,才导致了上面的那个错误。对于0开头的10进制数,正确的方法应该是parseInt(
numString, 10)。
分享到:
相关推荐
parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制。比如说parseInt(“010”,10)就是10进制的结果:10,parseInt(“010”,2)就是2进制的结果:2,parseInt(“010”,8)就是8进制的...
### JavaScript中的`parseInt`函数分析 #### 一、引言 在JavaScript编程中,`parseInt`函数是一个常用且重要的函数,用于将字符串转换为整数。然而,在使用`parseInt`时,开发者可能会遇到一些意料之外的行为,...
我们经常用ParseInt函数转换字符串为int数值,ParseInt函数有两个参数可以设置,其中第二个参数可以缺省。 ParseInt(“字符串”,使用的进制) var num1=ParseInt(“10”,2)//2 var num1=ParseInt(“10”,8)//8 var ...
JavaScript中的parseInt函数是用于将字符串转换为整数的内置函数,但是在使用时有一些需要注意的问题。首先,parseInt函数在不同的浏览器环境下可能会有不同的默认行为,这在IE8及更早版本的浏览器中表现得尤为明显...
#### 二、parseInt函数详解 ##### 1. 定义 `parseInt`函数的主要作用是解析一个字符串并返回一个整数。该函数可以接受两个参数:一个是待解析的字符串,另一个是基数(可选)。基数用于指定待解析字符串的进制,...
本文实例讲述了golang中strconv.ParseInt函数用法。分享给大家供大家参考,具体如下: golang strconv.ParseInt 是将字符串转换为数字的函数,功能灰常之强大. 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二...
`JavaScript`中的`parseInt`和`Number`函数都是用来将字符串转换为数字的,但它们在处理字符串的方式上存在显著的差异。 `parseInt`函数的主要功能是解析一个字符串参数,并根据指定的基数(radix)返回一个整数。...
主要介绍了JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法,因转换的字符串数字都以0开头,导致parseInt函数在浏览器和Android WebView中转换结果不一样,本文给出了解决方法,需要的朋友可以参考下
### JavaScript的parseInt函数详解 #### 一、概述 在JavaScript编程语言中,`parseInt`函数是一种常用的方法,用于将字符串转换为整数。虽然大多数开发者对其基本用途有所了解,但在某些特定情况下,`parseInt`的...
在JavaScript编程中,`parseInt()`函数是一个非常常用的工具,用于将字符串转换成整数。然而,这个函数在处理特定情况时可能会出现不预期的行为,正如标题和描述中提到的“bug问题”。这个问题主要体现在当`parseInt...
在JavaScript编程中,parseInt函数是一个非常重要的工具,它用于将字符串转换成整数。但是,这个函数在使用时有一定的复杂性和需要注意的地方。下面将详细介绍parseInt函数的使用方法和技巧,并对一些常见问题进行...
js parsefloat parseint JavaScript提供了3个显式的类型转换函数,分别是eval()、parseInt()和parseFloat()。 eval()函数:将字符串表达式转换成数字值。例如,语句total=eval(“432.1*10”)...
### JavaScript中的parseInt函数详解 #### 一、概述 在JavaScript编程中,`parseInt()`函数是一个非常重要的工具,用于将字符串转换成整数。它在处理数据格式化、表单验证等场景时尤其有用。本文旨在深入探讨`...
### JavaScript `parseInt()` 函数的进制转换注意事项 #### 概述 `parseInt()` 是 JavaScript 中一个非常常用的方法,主要用于将字符串转换成整数。它接受两个参数:第一个参数是要转换的字符串,第二个参数则是该...
其中,Number()、parseInt()、parseFloat() 是三个常用的转换类型函数,每个函数都有其独特的特性和处理方式。 一、Number() 函数 Number() 函数是一个强制类型转换函数,它可以将其他数据类型转换为数字类型。...