问题描述:
在用户已经下单了,但是并没有完成支付时,为用户的订单保留两小时的待支付状态。在 安卓机 和 pc浏览器端 没有发现问题,但是在iphone上就会出现NAN:NAN:NAN。
后台传过来的数据的时间格式:
"endTime":"2019-02-27 00:00:00.0",
我的处理方式:
![](https://img.haomeiwen.com/i15883849/08959f5e02f174da.png)
问题所在:
iPhone 的浏览器内核 和 safari 浏览器是相同内核 ---- Webkit 。 百度后发现,这是一个老坑。
关于 new Date(dateString):
1. 在webkit 内核中,所接受的时间格式如下:
1.1 YYYY/MM/DD (eg: 2001/01/02)
1.2 YYYY/MM/DD hh:mm:ss.sss (eg: 2001/01/02 00:00:00.000)
也就说在webkit内核中,不接受时间以 "/"分开的时间字符串,
2. 在chrome中,接受格式比较多,时间格式如下:
2.1 YYYY-MM-DD
2.2 也支持以上的webkit内的时间格式
因此在当我传入参数:"2019-02-27 00:00:00.0" 时,在chrome下没问题,但是在safari下就无法解析
解决办法:
为了兼容两者,所以在传参前先对时间进行一次格式化。
let _fromatTime = time.replace(/-/g,"/");
总结:
当我发现这个坑之后,发现已经有很多人写过;自己为了记牢,做一次笔记。
以下是我的测试 new Date("2019-01-21T10:10:22.0")
1.Firefox
![](https://img.haomeiwen.com/i15883849/7886f00a9b91fe79.png)
2. chrome
![](https://img.haomeiwen.com/i15883849/4d26962f40648991.png)
3. QQ
![](https://img.haomeiwen.com/i15883849/ed80c92480daf319.png)
4. safari
![](https://img.haomeiwen.com/i15883849/8b5f4f30630e0008.png)
网友评论