打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
JavaScript中的Date对象在Safari与IOS中的“大坑”

   最近小编在做一个会议室预定的功能,这个功能就像在买电影票时选择座位一样,看看会议室的哪个时间段空闲,有什么设备等等。由于我做的是APP,APP既要兼容Android,又要兼容iOS,刚开始的开发与调试我都是用谷歌浏览器干的,我没有用其它浏览器进行测试,谁知道最后遗留一个很大的隐患。下面是我的界面。


 问题一:

 这个界面运用了大量的日期类型的计算,当我们用JavaScript实例化一个日期对象时,我们可以这样用:

[javascript] view plain copy
print?
  1. var date =new Date();  

 上面这段代码是获取当前日期,这段代码在Firefox、Chrome、Safari浏览器中都可以运行。但是如果我想根据字符串获取日期,问题就来了。看下面代码。

[javascript] view plain copy
print?
  1. var date =new Date("2016-05-31 08:00");  

 这段代码是获得字符中指定的日期,它Firefox、Chrome中就能运行,但是放在Safari就会报错,错误是NaN,意思是Not a Number。就是因为这个错,苹果手机不能正常运行我开发的这个界面,当时都快郁闷死了,我写了300行js啊,几乎都与时间有关,不是取值就是赋值,要不就是计算,如今IOS不支持。。。。。。。

 在网上找了一下,将代码这样写就好了:

[javascript] view plain copy
print?
  1. var date =new Date("2016/05/31 08:00");  

 这样androidios就能共用了,写了个函数,替换一下!

[javascript] view plain copy
print?
  1. function GetDateDiff(startDiffTime, endDiffTime) {  
  2.             //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式   
  3.             startTime = startDiffTime.replace(/\-/g, "/");  
  4.             endTime = endDiffTime.replace(/\-/g, "/");  
  5. };  

 问题二:

  HTML5中新增了日历控件,如果将控件的type=“datetime-local”,如果是Chrome,控件的日期显示格式是2016/05/30 08:00 ,如果是Safari,日期的显示格式是:2016-05-31T08:00,当我们用jQuery取值赋值的时候,就必须用这种方式才能赋值:假如说这个日历控件的id是timeDate,代码如下:

[javascript] view plain copy
print?
  1. $("#timeDate').val("2016-05-30T08:30");  

  用$("#timeDate').val("2016/05/30 08:30");就会报错。可是Chrome的显示方式就是这样的啊!!!尼玛的还有天理吗?
  这两个坑肯定不光坑过我自己一个人,希望以后注意吧!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
IOS5中的Safari不兼容Javascript中的Date问题,
Angular的daterangepicker日历插件常用配置
JavaScript 输出
《React-Native系列》19、 ListView组件之上拉刷新(iOS和Android通用)
MySQL Community Server 5.7 的数据备份
php获取前一天,前一个月,前一年的时间
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服