前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用JavaScript+layui实现一个日期计算的工具

用JavaScript+layui实现一个日期计算的工具

作者头像
何处锦绣不灰堆
发布2020-05-29 09:53:51
5610
发布2020-05-29 09:53:51
举报

日历是我们生活中必不可少的一个东西,不管是电脑自带的日历,还是手机里面自带的,或者是家里桌面上摆放的,其实都是为了看日期,算日子,但是所有这些其实都是不具备计算日期的功能的,只是告诉你哪一天是什么节日,但是到底还有多少天可以到我们还要自己算,那么这个问题也困扰到我了,所以我决定写一个小工具,将常见的节日剩余天数计算出来,同时可以根据自己要求的日期,计算一下还有多少天,或者是一个特殊的日期已经过去了多少天,我们今天就简单的写一个这个工具!

效果预览:

样式是使用layui实现的,这里不做赘述,layui官网都是可以直接找到的!

H5代码:

<div>
		<label>计算日期的小工具</label>
		<br />
		<button  type="button" name="" id=""  οnclick="datectrol('距离中秋日期','Sep 24,2018')">中秋节</button>
		<button  type="button" name="" id=""  οnclick="datectrol('距离重阳节日期','Oct 17,2018')">重阳节</button>
		<button  type="button" name="" id=""  οnclick="datectrol('距离圣诞节日期','Dec 25,2018')">圣诞节</button><br />
		<button  type="button" name="" id=""  οnclick="datectrol('距离春节日期','Feb 4,2019')">春节</button>
		<button  type="button" name="" id=""  οnclick="datectrol('距离除夕日期','Feb 5,2019')">除夕</button>
		<button  type="button" name="" id=""  οnclick="datectrol('距离元旦日期','Jan 1,2019')">元旦</button><br />
		<input type="button" name="" id="userdate" value="查询" οnclick="convertdate(this.value)" class="inputcss"/>
		<input type="date" id="datetime" value="" placeholder="自己输入"  class="layui_input"  οnchange="valdate()"/>
		</div>

css代码:

div{text-align: center;}
			label{font-size: 2rem;font-family: "agency fb";}
			label:hover{color: #1E9FFF;}
button {display: inline-block;height: 38px;line-height: 38px;padding: 0 18px;
				    background-color: #1E9FFF; color: #fff;white-space: nowrap; text-align: center;
				    font-size: 14px;border: none;border-radius: 2px;cursor: pointer;opacity: .9;
				    width: 8rem;height: 4rem;margin-left: 1rem;margin-top: 1rem;}
button:hover{width: 9rem;height: 4.5rem;border-color: #F72359;}	 	 
.inputcss{display: inline-block;height: 38px;line-height: 38px;padding: 0 18px;
				      background-color: #1E9FFF; color: #fff;white-space: nowrap; text-align: center;
				      font-size: 14px;border: none;border-radius: 2px;cursor: pointer;opacity: .9;
				      width: 8rem;height: 4rem;margin-left: 1rem;margin-top: 1rem;}   
.inputcss:hover{width: 9rem;height: 4.5rem;border-color: #F72359;}
.input_date{margin-left: 1rem;}
.layui_input{display: block;width: 12rem;padding-left: 10px;height: 38px;line-height: 38px;line-height: 36px\9;
						 border: 1px solid #e6e6e6;background-color: #fff;border-radius: 2px;margin-top: 1rem;margin-left: 45%;}

js代码:

/*计算时间*/
		function datectrol(name,val){
			BirthDay=new Date(val);//元旦的日期
			today=new Date();//当前的日期
			timeold=(-today.getTime()+BirthDay.getTime());
			sectimeold=timeold/1000;
			secondsold=Math.floor(sectimeold);
			msPerDay=24*60*60*1000;
			d_daysold=timeold/msPerDay;
			daysold=Math.floor(d_daysold);
			d_hrsold=(d_daysold-daysold)*24;
			hrsold=Math.floor(d_hrsold);
			d_minsold=(d_hrsold-hrsold)*60;
			minsold=Math.floor((d_hrsold-hrsold)*60);
			seconds=Math.floor((d_minsold-minsold)*60);
			layer.open({
			  skin: 'demo-class',
			  title:name,
			  content: ''+name+'还有:'+daysold+'天'+hrsold+'小时'+minsold+'分'+seconds+'秒'
			});  
		}
		/*将时间填进去*/
		function valdate(){
			$("#userdate").val($("#datetime").val());
		}
		/*日期组件*/
		function datechooice(){
			laydate.render({ 
			  elem: '#datetime'
			  ,type: 'date' //默认,可不填
			});
		}
		/*时间转换*/
		function convertdate(val){
			console.log(val);
			if(val == "查询" || val == null || val == undefined){
				layer.msg("请选择日期再操作");
				return false;
			}
			var condate = val.split("-");
			var year = condate[0];
			var month = condate[1];
			var day = condate[2];
			var conmonth;
			switch(month){
			  case "01":
			  month = "Jan";
			  break;
			  case "02":
			  month = "Feb";
			  break;
			  case "03":
			  month = "Mar";
			  break;
			  case "04":
			  month = "Apr";
			  break;
			  case "05":
			  month = "May";
			  break;
			  case "06":
			  month = "Jun";
			  break;
			  case "07":
			  month = "Jul";
			  break;
			  case "08":
			  month = "Aug";
			  break;
			  case "09":
			  month = "Sep";
			  break;
			  case "10":
			  month = "Oct";
			  break;
			  case "11":
			  month = "Nov";
			  break;
			  case "12":
			  month = "Dec";
			  break;
			  default:
			  month = "|"
			}
			/*将数据格式化成需要的格式*/
			var userdatetime = month+" "+day+","+year;
			datectrol(name,userdatetime)
		}

PS:这里的时间处理方面是这样的,可能有人没理解我的做法,我解释一下!就是计算日期的时候的格式是这样的:英文+空格+天+,+年份,我写到这里的时候发现layui提供给我的时间的格式是这样的:年-月-天,是不可以直接使用计算的,那么这个时候我需要做的就是将这个时间格式转为可以用的格式,做法是先将-分割的地方分离出来:

var condate = val.split("-");

分别拿到年月日,这里有人会说了,你怎么知道分割以后就是一个数组呢?这个很简单,可以打印出来看格式,他是一个[]包围的数组,那么既然是数组,分别拿到数组下标对应的数据就顺理成章了:

var year = condate[0];
var month = condate[1];
var day = condate[2];

拿到以后呢,我们需要做的就是将月份对应的英文转换一下,这个时候两种写法,可以使用if(){}else{}只要不觉得麻烦,当然也可以使用switch(){case},我建议使用这个,代码简单,其次不会写乱:

最后就是将数据格式化为我们需要的,这里拼接字符串就可以了:

var userdatetime = month+" "+day+","+year;

最后调用计算的函数就OK了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档