关于js new Date() 出现NaN 的分析
此NaN不为NaN:
var date =new Date(d);
if(!date || !date.getFullYear) {
return;
}
return S.Date.format(d,'yyyy-mm-dd');//格式化函数,跟此文无关
在其他浏览器下正常,但是在ie下,程序报错
在ie调试器下,发现date 为NaN,如图:
如果是NaN,那么if判断会返回true,会 return "",但是诡异的一幕发生了,
代码说明if判断返回了false,控制台的结果也说明了这一点:
可以看出date = NaN,但是 !date 为false,!NaN 为 true,我的第一反应,ie下JS的Bug?
然后又做了一些测试
代码如下:
var date = NaN;
alert(!date) //返回true
var date = new Date('2011-1-1');
alert(!date) //返回false
但是我想了一下还是不太对,又在控制台做了下面的测试:
这个说明date的getFullYear是存在的,那么date是个对象
这个也说明了,date是个object 而不是 NaN,仅仅是ie调试器的一个问题
date.getFullYear() =》NaN
date.getDate() =》NaN
这些NaN则为真正的NaN
总结 :
在ie下 new Date('date text') 时返回的结果是一个特殊的日期对象,只是ie调试器将之显示成了NaN, 对其调用返回number的方法将都会返回NaN.
相关推荐
-
关于js datetime的那点事
复制代码 代码如下: //把一个日期字符串如"2007-2-28 10:18:30"转换为Date对象 var strArray=str.split(" "); var strDate=strArray[0].split("-"); var strTime=strArray[1].split(":"); var a=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],
-
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
复制代码 代码如下: var date1=new Date(dateTimes[z][1]); 在火狐下 可以正常取得时间,在IE7下 却是 NaN.纠结老长时间,放弃了new date 然后再老外的论坛中找了一段段代码可以兼容所有浏览器的格式化日期代码: 复制代码 代码如下: function NewDate(str) { str = str.split('-'); var date = new Date(); date.setUTCFullYear(str[0], str[1] - 1, s
-
js实现的日期操作类DateTime函数代码
方法注解: 将指定的天数加到此实例的值上. 将指定的小时数加到此实例的值上. 将指定的分钟数加到此实例的值上. 将指定的毫秒数加到此实例的值上. 将指定的月份数加到此实例的值上. 将指定的秒数加到此实例的值上. 将指定的年份数加到此实例的值上. 将此实例的值与指定的 Date 值相比较,并指示此实例是早于.等于还是晚于指定的 Date 值. 返回一个数值相同的新DateTime对象 返回一个值,该值指示此实例是否与指定的 DateTime 实例相等. 获取此实例的日期部分. 获取此实例所表示的日
-
js字符串日期yyyy-MM-dd转化为date示例代码
最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资料,发现是由于Date.parse()函数对日期格式有要求:详细参考 Date.parse函数 对于js操作日期: 创建一个日期对象: var objDate=new Date([arguments list]); 参数形式有以下5种: 复制代码 代码如下: view plainnew Date("month dd,yyyy hh:mm:ss");
-
js通过Date对象实现倒计时动画效果
js通过Date对象实现倒计时效果,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>倒计时动画</title> <style> div{ text-align:center; height:100px; line-height:100px; } </style> &l
-
JS简单实现String转Date的方法
本文实例讲述了JS简单实现String转Date的方法.分享给大家供大家参考,具体如下: <script> var s=["2008-8-1","2009/9/2","10/3/2010"]; for(var i=0;i<s.length;i++){ var d = string2date(s[i]); var year = d.getFullYear(); var month = d.getMonth()+1; var dat
-
javascript中Date format(js日期格式化)方法小结
本文实例总结了javascript中日期格式化的方法.分享给大家供大家参考,具体如下: 方法一: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 200
-
JavaScript Date对象使用总结
//全局函数 Date //Date 类的静态方法 Date.parse Date.UTC //Date 对象的建立方法 new Date() new Date(毫秒数) new Date(标准时间格式字符串) new Date(年, 月, 日, 时, 分, 秒, 毫秒) //Date 对象的更多方法 getFullYear (getUTCFullYear) getMonth (getUTCMonth) getDate (getUTCDate) getDay (getUTCDay) getHou
-
JavaScript Date对象应用实例分享
本文实例为大家分享了js Date对象应用3个实例,供大家参考,具体内容如下 一.获取日期时间,秒数实时跳动 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>date01</title> <style> #date{ position: absolute; font-size: 30px; f
-
JS中Date日期函数中的参数使用介绍
要创建一个一个日期对象,可以使用以下的方式: 复制代码 代码如下: var now=new Date() 当然,函数中没有传递任何参数,表示此对象now自动获取了当前的时间. 如果想要创建一个自定义时间的对象,则要对Date()进行参数的传递.而这个参数,必须是毫秒数(UTC时间1970年1月1日午夜起至自定义时间为止的毫秒数). 我们可以使用Date.parse()和Date.UTC()来获得自定义时间的毫秒数. Date.parse()接收一个表示日期的字符串参数,例如"May 25,201
随机推荐
- 基于Vuejs实现购物车功能
- QQ聊天记录删除了怎么恢复 详细步骤教程
- VBS和页面中响应COM的事件的方法和代码
- 快速排序和分治排序介绍
- Oracle数据库系统紧急故障处理方法
- 仿dedecms下拉分页样式修改的thinkphp分页类实例
- JavaScript 学习笔记 Black.Caffeine 09.11.28
- MySQL中字符串函数详细介绍
- redis查看连接数及php模拟并发创建redis连接的方法
- curl实现站外采集的方法和技巧
- Python的Django框架中的数据库配置指南
- jQuery移动端图片上传组件
- Javascript & DHTML 实例编程(教程)DOM基础和基本API
- JavaScript基本语法讲解
- Android基础之Activity生命周期
- 解决node修改后需频繁手动重启的问题
- elementUI中Table表格问题的解决方法
- 使用python画社交网络图实例代码
- Django之无名分组和有名分组的实现
- 基于layui实现高级搜索(筛选)功能