iOS一部分机型使用new Date()
将字符串转换为日期时,会有兼容性问题。比如 new Date('2023-01-01 10:10:10')
转换后出错。
解决办法1
ios无法处理-
作为分隔符的日期,但是可以处理/
分隔的日期。因此可以将-
转换成’/'后再进行处理。
let str = '2023-01-01 10:10:10'
str = str.replace(/\-/g, '/')
new Date(str)
解决办法2
有一些ios是连/
都无法处理的。那就将字符串中的日期要素提取出来,再进行转换。
// 日期字符串要按照 年月日时分秒 的顺序,且月份分隔符支持 - 和 /
function getNewDate(data) {
if(typeof data === 'string') {
let arr = data.split(/[- : \/]/)
// 月份特殊处理
if(arr[1] !== undefined || arr[1] !== null){
arr[1] = arr[1] - 1
}
return new Date(...arr)
}
return new Date(data || new Date())
}