/ 开发笔记

#Cocos Creator# YYYY-MM-DD HH:mm:ss格式的日期在iOS或者安卓报错的解决方法

问题环境

需要处理一个日期date格式的字段,文档里说的是普通的date数据,即一个大整数(表示从某个时间点开始的毫秒数),但是,后来服务端提前帮前端解析成了一个可读的时间,格式是:YYYY-MM-DD HH:mm:ss,如 2019-07-09 12:02:01 。

代码还是按照旧的文档写的,于是上来就先把进行转换。

var date = new Date(endDate);

在浏览器里测试时,一直没有报任何错误。
但是,打包到手机上,不管是iOS还是Android,都提示invalid date

原因

后来查到原来这种格式并不是所有浏览器都支持的格式

https://stackoverflow.com/questions/4310953/invalid-date-in-safari

解决方法

方法很多,最通用健壮的方法是使用一个日期格式化的库。

但是,我不想引入新的库,于是就找了一个偷懒的方式,使用了另外一种格式,把日期和时间中间的空格换成了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浏览器上测试成功。

参考

  1. https://stackoverflow.com/questions/50029024/utc-date-conversion-to-local-date-does-not-work-safari/50033029#50033029

  2. https://stackoverflow.com/questions/4310953/invalid-date-in-safari