python 多线程就这么简单(续)
2016-04-19 11:15
661 查看
有这么一个JavaScript函数,目的是想判断两个形式为“YYYY-MM-DD hh:mm:ss”或“YYYY/MM/DD hh:mm:ss”的字符串表示的日期的先后顺序,代码如下:
这个函数看上去好像没错,但实际运行的时候就会出现很诡异的情况:用"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)。
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)。
相关文章推荐
- 【整理】python 3.x爬虫
- Pythonや機械学習、そして言語の競争について – 極めて主観的な見地から
- Python 2.7.x 和 3.x 版本的重要区别小结
- python文件命名陷阱
- ml的线性回归应用(python语言)
- python和c#通用一致的des加密采用CBC和PKCS7
- Python-While刷博爬虫
- Selenium2 Python 自动化测试实战学习笔记(七)
- python 中 dist-packages 和 site-packages 的区别
- LeetCode[Array]----3Sum Closest
- python 列表 字典 读写文件:pickle模块的基本使用
- python默认编码问题
- Python学习笔记(八)——有关文件的操作
- python实现简单socket通信的方法
- 使用DataFrame和numpy生成交叉表(笛卡尔积)
- 【python项目实战】BBS论坛(5)帖子列表展示
- Python实现MapReduce
- python实现域名系统(DNS)正向查询的方法
- Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED
- Python实现文件复制删除