龙空技术网

微信小程序,日期运算在IOS下不兼容的问题(软失业中)

善良好好 96

前言:

目前姐妹们对“javascript万年历代码”大致比较讲究,大家都想要剖析一些“javascript万年历代码”的相关内容。那么小编也在网摘上搜集了一些关于“javascript万年历代码””的相关内容,希望大家能喜欢,大家快快来了解一下吧!

今天是软失业第2天,在开发一个日历相关的微信小程序,以作为备选退路。

需求:获取今天及今天以后7天的日期,做为一个日期范围;

结果:1)PC开发机上正常;2)安卓真机上也正常;但在IOS真机下无法获取时间,表现为NaN-NaN-NaN

因为之前做C++和安卓JAVAV,没有JS(JAVASCRIPT)经验,感觉非常的奇怪,于是打了很多日志,最终定位问题在IOS与安卓的日期格式不一样,同时还有日期要加上时间,否则计算不准确。

1.日期格式:

即安卓可以将日期字符串表示为2021-12-30,2021/12/30 ,但IOS只能表示为2021/12/30;

2.日期格式要加上时间,

这一点需要特别注意,在日期字符串转换时一定要加上时间,即 "2021/12/31 00:00:00" 否则加上N天后,并日期会不准确!

JAVASCRIPT代码如下:

var startDayIos = formatDateString( 2021 , 12, 30 ,'/' );//兼容IOS的时间运算

var date = new Date( startDayIos +" 00:00:00" ); //防止日期不准确

date = dateAddDay( date , 7 ) ;

var endDay = comm.formatDateEx( date.getFullYear() , date.getMonth() + 1 , date.getDate() );

//格式化字符串

//year - 数字年,

//month - 数字月

//day - 数字日

//spliter - 分隔符,需要用'/'

function formatDateString(year , month , day , spliter ) {

var strFullDate = year + spliter ;

if ( month < 10 ){

strFullDate = strFullDate + "0" ;

}

strFullDate = strFullDate + month + spliter;

if ( day < 10 ){

strFullDate = strFullDate + "0";

}

strFullDate = strFullDate + day;

return strFullDate;

}

//时间加上

//date - date 时间

//days - 增加的天数,如果过去的时间,用负数表示,比如-7

function dateAddDay(date , days) {

var d = Date.parse( new Date(date));

d = +d + 1000*60*60*24*days;

d = new Date(d);

return d ;

}

以上代码是从程序中COPY下来的,可以直接使用。

下面来看功能截图,

点击今日限行,需要列出后7天的限行信息,如下图:

以上代码在IOS和安卓运行正常,如果需要测试,可以搜索这个小程序验证一下。

如你有类似问题,请参照上面的代码,或在下方留言。

#微信小程序# #每日学习 JavaScript# #日期# #万年历# 

标签: #javascript万年历代码