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

2 回复

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

解决方案

  1. 使用标准日期格式
    确保传递给 Date.parse 的日期字符串是标准的 ISO 8601 格式,例如 YYYY-MM-DDYYYY-MM-DDTHH:mm:ss.sssZ

    const dateString = '2023-10-05T12:34:56.789Z';
    const timestamp = Date.parse(dateString);
    console.log(timestamp); // 正常解析
    
  2. 手动解析日期字符串
    如果日期字符串是非标准的,可以手动解析并构造 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()); // 获取时间戳
    
  3. 使用第三方库
    使用第三方日期处理库(如 moment.jsdate-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()); // 获取时间戳
    
  4. 使用 new Date() 直接构造日期对象
    如果日期字符串是标准的,可以直接使用 new Date() 构造日期对象。

    const dateString = '2023-10-05T12:34:56.789Z';
    const date = new Date(dateString);
    console.log(date.getTime()); // 获取时间戳
回到顶部