当前位置: 首页 > news >正文

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

在开发微信小程序时,使用了 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 等方法

    const date = new Date("2023-10-10").getTime();
    date.setHours(0);
    

3 代码示例

// 项目开始时间,后台返回
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;
http://www.lryc.cn/news/190671.html

相关文章:

  • Avalonia如何更改全局背景色
  • 万界星空科技低代码平台云MES系统功能场景
  • 运维大数据平台的建设与实践探索
  • 【Java 进阶篇】创建 HTML 注册页面
  • 【JVM系列】- 启航·JVM概论学习
  • Windows技巧
  • Git 应用小记
  • APT攻击与零日漏洞
  • leetCode 1143.最长公共子序列 动态规划 + 滚动数组
  • 【C++ Miscellany】继承体系非尾端类设计为抽象类
  • Leetcode236. 二叉树的最近公共祖先
  • Swift SwiftUI CoreData 过滤数据 2
  • 解决maven骨架加载慢问题(亲测解决)
  • Android---java内存模型与线程
  • 23.10.7.sql 里面的DISTINCT
  • mysql面试题38:count(1)、count(*) 与 count(列名) 的区别
  • nodejs+vue+elementui大学生心理健康管理系统
  • 【MySQL】深入解析MySQL双写缓冲区
  • u-boot 编译与运行
  • C++QT-day2
  • 【Acwing187】导弹防御系统(LIS+剪枝+贪心+dfs+迭代加深)
  • 字节大佬带你五分钟掌握接口自动化测试框架
  • 上传文件夹里面的文件后,按树结构的table表格展示
  • 【error】root - Exception during pool initialization
  • 【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)
  • Spring WebClient 基于响应式编程模型的HTTP客户端
  • IP真人识别方法与代理IP检测技术
  • MySQL 面试知识脑图 初高级知识点
  • 【数据结构】二叉树的链式结构及实现
  • OpenCV4(C++)—— 创建窗口滑动条来调参