【已解决】微信小程序-苹果手机日期解析异常

在开发微信小程序时,使用了 uView 的 CountDown倒计时 组件和 uni.$u.timeFrom Api,后台传递了一个时间字符串,前台计算时间戳的差值,来显示还有多久开始,这个功能在模拟器和我自己手机(iphon13)上都是正常的,在提交测试之后,测试反馈(iphone12)日期显示异常,先后经历了三个版本的代码,最终解决了此问题。

1 遇到的异常情况

  • 还有 0天 0小时 开始
  • NaN年前

2 结论和解决方案

  • IOS 系统的部分版本不支持 yyyy-mm-dd 格式,需要将 - 替换为 /,即修改为 yyyy/mm/dd

  • IOS 系统的不同版本对 yyyy-mm-dd 格式的兼容性不同,iphone13 的 16.3 版本支持 yyyy-mm-dd

  • IOS 系统不支持日期的字符串拼接,如 new Date('2023-10-10 00:00:00').getTime(),如果需要设置年月日时分秒,可以使用 setHours 等方法

    js 复制代码
    const date = new Date("2023-10-10").getTime();
    date.setHours(0);

3 代码示例

js 复制代码
// 项目开始时间,后台返回
const startTime = "2023-10-12";

// 第一版
// 效果:12异常,13正常
// iphone12 还有 0天 0小时 开始
// iphone13 还有 1天 8小时 开始
const beginTimeStamp = new Date(`${startTime} 00:00:00`).getTime();
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp; // 传递给CountDown组件

// 第二版
// 效果:12正常,13异常
// iphone12 还有 1天 8小时 开始
// iphone13 还有 0天 0小时 开始
const timeStr = startTime.replace(/-/g, "/"); // IOS不支持日期中的-,需要将-替换为/
const beginTimeStamp = new Date(`${timeStr} 00:00:00`).getTime();
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp;

// 第三版
// 效果:12和13都正常
// iphone12 还有 1天 8小时 开始
// iphone13 还有 1天 8小时 开始
const timeStr = startTime.replace(/-/g, "/"); // IOS不支持日期中的-,需要将-替换为/
const beginDate = new Date(timeStr);
beginDate.setHours(0); // IOS不支持字符串拼接,需要调用setHours方法
const currentTimeStamp = Date.now();
const timePoint = beginTimeStamp - currentTimeStamp;
相关推荐
终端安全笔记1 小时前
一份配置管十项 AI 功能:它关的是入口,不是数据
网络安全·ios·移动设备管理
一渊之隔6 小时前
uniapp BLE 开发踩坑:小米手机数据接收截断问题排查全记录
智能手机·uni-app
2501_915106326 小时前
跨平台抓包工具怎么选?TraceEagle抓包鹰 的四种跨平台能力
网络协议·计算机网络·网络安全·ios·adb·https·udp
黑科技iOS上架9 小时前
iOS应用上架:提前规避审核被拒风险
ios·审核
换元不配限9 小时前
Android 休眠与唤醒完全指南:从手机到 IoT 设备的实战解析
android·物联网·智能手机·alarmmanager·wakelock·workmanager·休眠和唤醒
zhiboshequ10 小时前
Ai音视频对话在微信小程序端的技术实现方案
人工智能·微信小程序·live-pusher·live-player·音视频对话
小蒜学长10 小时前
基于过程性评价的ai助学平台(代码+数据库+LW)
java·spring boot·后端·微信小程序·过程性评价
茶底世界之下12 小时前
方图一定要裁照片吗?用 Awaking 比较裁切与留白
ios
wulechun13 小时前
基于深度学习的中文自然语言处理工具Jiagu:从原理到实战的开发者指南
智能手机
薛先生_09913 小时前
手机远程控制电脑哪个好用?2026安卓鸿蒙iOS手机远程控制电脑软件横测排名
智能手机·电脑