先说重点: 在本地调试不管是小程序开发工具还是微信网页开发工具 使用MACOS系统 都不会保错# Invalid Date 但是真机运行必会出错,Ios系统 不认识时间符号:- 只认识时间符号: / ex:
- [❎ ] 2024-07-02 10:30 (ios不认识)
- [✅ ] 2024/07/02 10:30 (ios认识) 所以只要是时间格式字符串出现 - 就会Invalid Date
解决:
可以用第三方库,也可以自行转义
ex:
var datepre = '2024-07-02 10:30' var date = new Date(datepre) //到此ios就会报Invalid Date,你接下来就对date在无能力继续操作
替换成: `var datepre = '2024-07-02 10:30' datepre = datepre.replace(/T/g,' ').replace(/-/g,"/").indexOf('.')>-1?datepre.replace(/T/g,' ').replace(/-/g,"/").substring(0,datepre.replace(/T/g,' ').replace(/-/g,"/").indexOf('.')):datepre.replace(/T/g,' ').replace(/-/g,"/")
var date = new Date(datepre) //到此一切顺利,android 、ios 都能识别`
说明:
1. new Date()报错无法用try catch 捕获 所以只能用返回变量 去判断是否转换失败
2. replace(/T/g,' ') 是处理c 格式下 ios 6s 及更高版本的转换问题
3. replace(/-/g,"/") 是兼容ios格式下问题
4. substring(0,data.replace(/T/g,' ').replace(/-/g,"/").indexOf('.')) 是处理ios 6splus 下c格式 无法转换的问题