uni-app iOS下Date.parse无法正常解析
uni-app iOS下Date.parse无法正常解析
产品分类:
uniapp/小程序/微信
PC开发环境操作系统:
Windows
PC开发环境操作系统版本号:
Win11
HBuilderX类型:
正式
HBuilderX版本号:
3.98
第三方开发者工具版本号:
1.06.2310071
基础库版本号:
3.2.1
项目创建方式:
HBuilderX
示例代码:
console.log(Date.parse("2023-11-01"),"ceshi");
console.log(Date.parse("2023-11-1"),"ceshi");
console.log(Date.parse("2023-11-2"),"ceshi");
console.log(Date.parse("2023-11-3"),"ceshi");
console.log(Date.parse("2023-11-4"),"ceshi");
console.log(Date.parse("2023-11-5"),"ceshi");
console.log(Date.parse("2023-11-6"),"ceshi");
console.log(Date.parse("2023-11-7"),"ceshi");
console.log(Date.parse("2023-11-8"),"ceshi");
console.log(Date.parse("2023-11-9"),"ceshi");
console.log(Date.parse("2023-11-10"),"ceshi");
console.log(Date.parse("2023-11-11"),"ceshi");
console.log(Date.parse("2023-11-12"),"ceshi");
console.log(Date.parse("2023-11-13"),"ceshi");
console.log(Date.parse("2023-11-14"),"ceshi");
console.log(Date.parse("2023-11-15"),"ceshi");
console.log(Date.parse("2023-09-15"),"ceshi");
操作步骤:
console.log(Date.parse("2023-11-01"),"ceshi");
console.log(Date.parse("2023-11-1"),"ceshi");
console.log(Date.parse("2023-11-2"),"ceshi");
console.log(Date.parse("2023-11-3"),"ceshi");
console.log(Date.parse("2023-11-4"),"ceshi");
console.log(Date.parse("2023-11-5"),"ceshi");
console.log(Date.parse("2023-11-6"),"ceshi");
console.log(Date.parse("2023-11-7"),"ceshi");
console.log(Date.parse("2023-11-8"),"ceshi");
console.log(Date.parse("2023-11-9"),"ceshi");
console.log(Date.parse("2023-11-10"),"ceshi");
console.log(Date.parse("2023-11-11"),"ceshi");
console.log(Date.parse("2023-11-12"),"ceshi");
console.log(Date.parse("2023-11-13"),"ceshi");
console.log(Date.parse("2023-11-14"),"ceshi");
console.log(Date.parse("2023-11-15"),"ceshi");
console.log(Date.parse("2023-09-15"),"ceshi");
预期结果:
单个月份和日期在iOS小程序同样能解析
实际结果:
无法解析
bug描述:
iOS下真机调试Date.parse函数无法对月份和日单个做出正确判断
安卓和PC正常
更多关于uni-app iOS下Date.parse无法正常解析的实战教程也可以访问 https://www.itying.com/category-93-b0.html
iOS 不支持以中划线分隔的日期格式,正确写法是new Date(‘2020/01/01’)
更多关于uni-app iOS下Date.parse无法正常解析的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app
中,Date.parse
在 iOS 设备上无法正常解析日期字符串的问题,通常是由于 iOS 对日期字符串的格式要求较为严格。Date.parse
在不同平台上的行为可能不一致,尤其是在处理非标准日期格式时。
问题原因
iOS 的 Date.parse
方法对日期字符串的格式要求非常严格,通常只支持以下几种格式:
YYYY-MM-DD
YYYY-MM-DDTHH:mm:ss.sssZ
MM/DD/YYYY
如果日期字符串不符合这些格式,Date.parse
在 iOS 上可能会返回 NaN
。
解决方案
-
使用标准日期格式
确保传递给Date.parse
的日期字符串是标准的 ISO 8601 格式,例如YYYY-MM-DD
或YYYY-MM-DDTHH:mm:ss.sssZ
。const dateString = '2023-10-05T12:34:56.789Z'; const timestamp = Date.parse(dateString); console.log(timestamp); // 正常解析
-
手动解析日期字符串
如果日期字符串是非标准的,可以手动解析并构造Date
对象。const dateString = '05/10/2023 12:34:56'; const parts = dateString.split(/[\/ :]/); const date = new Date(parts[2], parts[1] - 1, parts[0], parts[3], parts[4], parts[5]); console.log(date.getTime()); // 获取时间戳
-
使用第三方库
使用第三方日期处理库(如moment.js
或date-fns
)来处理日期字符串,这些库通常对日期格式的兼容性更好。import moment from 'moment'; const dateString = '05/10/2023 12:34:56'; const date = moment(dateString, 'DD/MM/YYYY HH:mm:ss'); console.log(date.valueOf()); // 获取时间戳
-
使用
new Date()
直接构造日期对象
如果日期字符串是标准的,可以直接使用new Date()
构造日期对象。const dateString = '2023-10-05T12:34:56.789Z'; const date = new Date(dateString); console.log(date.getTime()); // 获取时间戳