介绍
这篇文章将为大家详细讲解有关小程序中怎么计算距离某个节日还有多少天,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
先看一下页面效果:
页面是这样的:
好了,正文如下
最近碰到个需求需要计算,距离圣诞,元旦,高考,国庆啊等最近一个节日,还剩多少天。
因为后台没空理我,所以本文讲解在js中如何解决这个需求。(建议实际中获取标准时间,当前时间有点不靠谱)
首先肯定是要用新的日期()获得当前时间对象,然后再用它的一些方法获取当前年月日等,根据年月日判断。
先看一下新的日期()对象常用的方法。
,, getYear();,//获取当前年份(2位) getFullYear才能();,//获取档期年份(4位) getMonth才能();,//,获取当前月份(划分,0代表1月,很神经,获取日是正常的日至31日…) 获取当前日期才能();,//,获取当前日(1 - 31) getDay才能();,//获取当前星期几(- 6,0 0代表星期天…) 取得时间才能();,//获取当前时间(从1970.1.1开始的毫秒数),注意,是毫秒数! ! ! getHours才能();,//,获取当前小时数(0-23) getMinutes才能();,//,获取当前分钟数(0-59) getSeconds才能();,//,获取当前秒数 ,,可以();,//获取当前毫秒数 toLocalDateString才能();,//,获取当前日期
一开始,我是先取得日期()对象的月、日,然后判断月份等不等于某个日期的月份。分三种情况……
,, let mydate =, new 日期(); let 才能;year =, mydate.getFullYear (); let 才能;month =, mydate.getMonth (); let 才能;day =, mydate.getDate (); ,,//才能,判断距离下个高考还需要多久 ,, 如果才能(& lt; month 6) { ,,,//,… }才能else 如果(month> 6) { ,,,//,… }{其他才能 ,,,如果(==day 7) { ,,,,, 还有,,,}{ ,,,,, ,,,} 以前,,}>但是转念一想,这个做法太繁琐了。于是换个思路,直接获取目标日期的时间戳和当前日期的时间戳,两者之间进行比较。
代码如下:
,//,公共API ,//@params 传入节日日期的str,例如& # 39;10 - 1 # 39;& # 39;目前消费量# 39;,& # 39;1 - 1 # 39;等 ,//@return 解决()回调的是个数组 ,//数组第一个参数返回的是& # 39;今& # 39;或者& # 39;明& # 39;这个字符串,第二个参数返回的是还剩多少天 ,凝固时间:函数(str) { ,, let 才能;promis =, new 承诺((解决,拒绝)=祝辞{ ,,//,,,获取时间对象 ,,let dateObj =, new 日期() ,,let year =, dateObj.getFullYear () ,,let month =, dateObj.getMonth () ,,let day =, dateObj.getDate () ,, ,,//,求当前日期和时间的时间戳 ,,//,这里需要注意的是,利用new 日期().getMonth()得到的是划分的数的值 ,,//,而用new 日期(& # 39;year-month-day& # 39;)初始化求今天0点0分0秒时的月 ,,//,需要传入的是1 - 12的,也就是月要+ 1 ,,let 你=,new 日期(), ,,let target =, new 日期(year +, str),,//,目标日期 ,,//,,,先保存起来,后续还会用 ,,let nowtime =, now.getTime(),,,,//,当前日期时间戳 ,,let sjc =, nowtime 作用;target.getTime(),//,时间差 ,,,//,回调的2个参数,会组成数组传入回调函数中 ,,//,这2个信息会直接赋值显示到页面中 ,,let theyear =, & # 39;今& # 39; ,,let thedays =0 ,,if (sjc & lt;, 0), { ,,,//,还未过今年某个节日 ,,,theyear =, & # 39;今& # 39; ,,,thedays =, Math.floor (Math.abs(时间/sjc (60, 24, *, *, 60, *, 1000))) ,,},else if (sjc 祝辞,0),{ ,,,//,已经过了今年某个节日 ,,,let mn =, year 作用;0,+ 1 ,,,let mntarget =, new 日期(mn +, str) ,,,let sjc2 =, mntarget.getTime(),安康;nowtime ,,,theyear =, & # 39;明& # 39; ,,,thedays =, Math.floor(时间/sjc2 (60, 24, *, *, 60, *, 1000)) ,,},{else ,,,//,一年的节日期间 ,,,theyear =, & # 39;今& # 39; ,,,thedays =0 ,,} ,,let arr =,(不撰写,,) ,才能解决(arr) })才能 return promis才能 以前,}小程序中怎么计算距离某个节日还有多少天