关于ios中new Date()兼容的问题

前两天,在写一个手机端活动的时候,活动页显示需要根据后端返回的时间段来展示。当时自信满满的写了下面这段代码

countTime(startTime, endTime){
	let nowDate = new Date(),
		startDate = new Date(startTime),
		endDate = new Date(endTime)
	if(nowDate >= startDate && nowDate <= endDate){
		return true
	}

	return false
}

在浏览器及微信开发者工具中,测试的时候相当丝滑 顺畅

一度以为写的代码百分百完美了,发不到环境之后才发现是自己想的太多了~~

安卓->显示正常

浏览器->显示正常

 ios->直接不展示

无语,手机没问题、浏览器没问题、那就只能是代码的问题。后来一行一行的测试,才发现ios这个大坑,它对于new Date()是有格式要求,只支持xxxx/xx/xx格式。(极度大无语事件)后端返回的时间是yy-mm-dd 类型的,问题找到了。

我们使用正则表达式将 ‘/’ 替换成 ‘-’,获取时间判断

下面是修改后的代码

countTime(startTime, endTime){
	let nowDate = new Date().getTime(),
		startDate = new Date(startTime.replace(/-/g, '/')).getTime(),
		endDate = new Date(endTime.replace(/-/g, '/')).getTime()
	if(nowDate >= startDate && nowDate <= endDate){
		return true
	}

	return false
},

发布之后,发现完美解决~

猜你喜欢

转载自blog.csdn.net/codingLeader/article/details/124803163