js判断对象是否属于Date类型并进行转换

    需求说明:前后台交互时,将后台的List集合封装为json传回前端js。而集合中的实体有字段类型为java.util.Date类型。那么后台返回的json对象到前台后
,此值会为Object,如果直接解析到此值alert出来(或者是显示在页面上),会是显示[object Object].我需要遍历json中的所有值,判断后台程序返回的json字符串中有值为Date类型
的话,将该值显示为"2013-09-06"这种形式。
    解决:1.遍历json的所有值,判断该值是否是Date类型:简单地 if (value instanceof Date) 或者 if (value instanceof Object) 或者if (value instanceof object)(因为
alert(value.typeof)打出来是object)都不能正确判断。而是if (Object.prototype.toString.call(value) == "[object Object]")能够正确判断出来。因为Date类型属于js中比较
特殊的类型,其他特殊的类型还有"Array","RegExp","Number","String","Object","HTMLDocument"等,都可以这样判断出来。
 注:这里的"特殊"是指什么呢? 
首先 "Array","RegExp","Date","HTMLDocument"这几个类型的对象的 typeof 结果都是"object" 
当然 更主要的是  Array RegExp Date ... 这几个类 是和 window对象绑定的. 
所以不能简单的通过 typeof   instanceof 和 constructor  来做判断. 
因为 
obj instanceof Array 成立的前提是 obj 和Array  要属于一个window 
obj .constructor == Array 成立的条件也是一样 
RegExp Date ... 类似. 
          2.要将该值转换为字符串显示格式(如"2013-09-06"),单纯地将js中Date类型转为字符串,直接用date.getYear() + (date.getMonth()+1) + date.getDay()即可,
但是,这里的问题是,从json解析出来的Date类型值现在是[object Object],使用value.getYear()等方法都无效。需要先将该值转为js的Date类型,简单地用Date(value)不行,

需要new Date(Date(value))这样才能正确地转为Date类型,然后便可以使用getYear()等方法转为字符串。

非常不幸的是:后边发现,new Date(Date(value))这样始终获取的是当前时间。。。。。。没有找到解决办法。。



参考资料:http://fins.iteye.com/blog/315901
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值