解决Uniapp 时间格式在IOS中的Invalid Date

216 阅读1分钟

先说重点: 在本地调试不管是小程序开发工具还是微信网页开发工具 使用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格式 无法转换的问题