问题环境
需要处理一个日期date格式的字段,文档里说的是普通的date数据,即一个大整数(表示从某个时间点开始的毫秒数),但是,后来服务端提前帮前端解析成了一个可读的时间,格式是:YYYY-MM-DD HH:mm:ss,如 2019-07-09 12:02:01 。
代码还是按照旧的文档写的,于是上来就先把进行转换。
var date = new Date(endDate);
在浏览器里测试时,一直没有报任何错误。
但是,打包到手机上,不管是iOS还是Android,都提示invalid date
原因
后来查到原来这种格式并不是所有浏览器都支持的格式
解决方法
方法很多,最通用健壮的方法是使用一个日期格式化的库。
但是,我不想引入新的库,于是就找了一个偷懒的方式,使用了另外一种格式,把日期和时间中间的空格换成了T,这样子:
YYYY-MM-DDTHH:mm:ss
举例:
2019-07-09 12:02:01 => 2019-07-09T12:02:01
代码
var date = new Date(endDate.replace(" ", "T"));
在ios和安卓、以及Chrome浏览器上测试成功。
参考