博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Date对象 IOS踩坑
阅读量:6851 次
发布时间:2019-06-26

本文共 1338 字,大约阅读时间需要 4 分钟。

Date对象 IOS踩坑

最近在做一个托管教师端小程序,里面有一个功能是选择某个日期加载该老师相关的课程,这里就需要用到日历组件。基于后台返回的数据及减少对日历组件的修改,我选择了对小程序一开始自配备的转换时间格式方法进行了修改。用起来也没有太大毛病,坑就在这里埋下了。

const formatTime = date => {  const year = date.getFullYear()  const month = date.getMonth() + 1  const day = date.getDate()  const hour = date.getHours()  const minute = date.getMinutes()  const second = date.getSeconds()  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')}const formatNumber = n => {  n = n.toString()  return n[1] ? n : '0' + n}module.exports = {  formatTime: formatTime}

由于开发和调试一直用的是微信开发者工具,在开发过程中也很顺利,直到使用了真机进行测试的。在安卓机上是没有问题的,但一旦遇到了苹果机,我的整个功能就垮掉了。排查了很久才发现是日期转换的问题。

在开发中,由于与日历相关,肯定会大量用到Date对象的。

当使用

var date = new Date();

在安卓和苹果机上是可以运行且有结果的。

但是在这个项目里面需要用到根据字符串去获取日期,然后问题就来了。我的字符串日期格式是2018-01-01类型的

var date = new Date("2016-05-31");

这段代码是获得字符中指定的日期,它Firefox、Chrome中就能运行,但是在苹果手机就会报错,错误是NaN,意思是Not a Number。就是因为这个错,苹果手机不能正常运行。

解决方法

var date =new Date("2016/05/31");

这种字符串格式获取日期在苹果和安卓机上都能正常运行。由于代码中大量用到的是-模式。在使用new Date的时候写一个函数去转换一下即可。

function GetDateDiff(startDiffTime, endDiffTime) {            //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式             startTime = startDiffTime.replace(/\-/g, "/");            endTime = endDiffTime.replace(/\-/g, "/");};

总结

不要轻易的去改微信小程序提供工具类的代码,为什么用"/"可能是有原因的,微信已经帮你兼容好了。否则,就像我一样浪费时踩来踩去的间在这个坑里

转载地址:http://ozgul.baihongyu.com/

你可能感兴趣的文章
C#语言获取控制面板“程序和功能”列表
查看>>
外网语音通信准备资料
查看>>
写字机器人开发之:python opencv linux下合作操作摄像头
查看>>
if-else选择结构
查看>>
一 网络概述 每天记录一点点
查看>>
oracle 阻塞会话的查看与解除
查看>>
这个分类为Linux学习笔记
查看>>
java并发编程实践
查看>>
【学习笔记】Android的线程和线程池
查看>>
SAP相关网站
查看>>
Linux系统管理(一)安装Linux操作系统
查看>>
python获取外网IP并发邮件
查看>>
vscode+typescript开发环境搭建
查看>>
浅谈SQL SERVER中事务的ACID
查看>>
设置expire_logs_days自动删除
查看>>
Nginx安装过程(Linux)
查看>>
Redis中中文内容显示十六进制字符串处理
查看>>
去硬件、拼内容,IT巨头们的下一站?
查看>>
我的友情链接
查看>>
2015年下半年系统集成项目管理工程师培训感想
查看>>