最近在做一个移动端的项目 ,使用到了一个时间选择的插件,显示时间方式 2017-11-05 08:00, 但是向后台传递时间时需要为new Date()格式。
代码:
var serviceTime = new Date("2017-11-05 08:00");
本来没有什么关系 ,在Android端也显示也很好 。但是在一台ios机上突然不能使用了 ,后台总是收不到数据。
在测试时发现 ios 在转换后 显示:
怎么也不能进行转换,之后在网上查询了一下,发现这个问题居然是new Date() 日期转时间格式的兼容问题。只需要这样写:
var serviceTime = new Date("2017/11/05 08:00");
我在网上查找了资料,原来是低版本的Safari解释new Date('2013-10-21')这个对象不一样,在IOS5中的Safari不支持这种写法.
在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象。
但是在IOS5版本里面的Safari解释new Date('2013-10-21') 就不正确,在IOS5的Safari中返回的永远是"Invalid Date"。
并且这并不是只有在ios 也是就Safari浏览器中才有的问题,而是在IE ,Firefox中也是不能很好地识别new Date('2013-10-21')写法的日期转换,
只有在chrome中可以很好运用,所以如果想更好的运用日期对象,最好做一下时间格式的处理:
function getDate(time) { //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 time = time.replace(/\-/g, "\/"); return time; };
这样就可以有一个 可以公用的时间格式了!