今天在移动端开发的时候,偶然发现了一个时区转换的小问题
后台返回的时间格式是:2021-03-16T08:41:42.68
最开始我直接new Date(),发现new完了也正常
直到今天测试的时候才发现ios系统上总是会多8小时(安卓系统未测试)
经过一番尝试,解决办法如下
// 转换后台返回的这种时间格式 2021-03-16T08:41:42.68
const time = '2021-03-16T08:41:42.68';
let myDate = time.slice(0,19).replace(/-/g, '/').replace(/T/, ' '); //去掉毫秒(如果不去掉毫秒,可能ios会返回Invalid Date)
myDate = new Date(myDate + ' +0800'); //+0800前面必须加空格!!!
return myDate
猜测可能是手机组编写 webview 组件的时候,没给它设置时区
总之,YYYY/MM/DD HH:MM:SS+0800
我们要按照这种时间格式来 new Date,才不会有时区的问题