如何更改时间精确度数(月\周\时分秒)

一、时间选择的种类:

首先调用浏览器自带时间控件,input的type属性有以下几种写法:

HTML代码:

type=‘date’ //显示年、月、日

选择日期:
在这里插入图片描述
选择时间:
在这里插入图片描述

type=‘week’//显示年、周

选择星期:
在这里插入图片描述

type=‘month’//显示年、月

选择月份:
在这里插入图片描述

type=‘datetime-local’//显示年、月、日、时、分
DateTime-Local类型:<input type="datetime-local"/>

在这里插入图片描述

二、.对日期时间控件的样式进行修改

目前WebKit下有如下9个伪元素可以改变日期控件的UI:

::-webkit-datetime-edit – 控制编辑区域的
::-webkit-datetime-edit-fields-wrapper – 控制年月日这个区域的
::-webkit-datetime-edit-text – 这是控制年月日之间的斜线或短横线的
::-webkit-datetime-edit-month-field – 控制月份
::-webkit-datetime-edit-day-field – 控制具体日子
::-webkit-datetime-edit-year-field – 控制年文字, 如2017四个字母占据的那片地方
::-webkit-inner-spin-button – 这是控制上下小箭头的
::-webkit-calendar-picker-indicator – 这是控制下拉小箭头的
::-webkit-clear-button –这是控制清除按钮的

实例

1.问题--------date类型改变行高和高度那个小三角并不会根据大小调整,实在太丑了,所以决定把它隐藏掉。

/* 去掉date中上下小三角,但是保留input类型为number的小三角。 */

input[type="date"]::-webkit-inner-spin-button { visibility: hidden; }

/*----------用来移除叉叉按钮 鼠标移上去还会显示----------*/

input[type="date"]::-webkit-clear-button{ display:none; }

代码

<style>
            /* 控制编辑区域的 */
          input[type="date"]::-webkit-datetime-edit{
            /* content: '起始时间'; */
            color: rgb(188,188,188); 
            padding-left: 10px;
          }
          /* 控制年月日这个区域的 */
          input[type="date"]::-webkit-datetime-edit-fields-wrapper { 
            background-color: #eee; 
          } 
          /* 这是控制年月日之间的斜线或短横线的 */
          input[type="date"]::-webkit-datetime-edit-text {
            color: blue; 
            padding: 0 .3em; 
          } 
          /* 控制年字 */
          input[type="date"]::-webkit-datetime-edit-year-field { 
            color: purple; 
          } 
          /* 控制月字 */
          input[type="date"]::-webkit-datetime-edit-month-field { 
            color: red; 
          } 
          /* 控制日字 */
          input[type="date"]::-webkit-datetime-edit-day-field  { 
            color: pink; 
          } 
        /*控制下拉小箭头的*/ 
        input[type="date"]::-webkit-calendar-picker-indicator {
          display: inline-block;
          width: 15px;
          height: 15px;
          /* position: absolute;
          top: 12px;
          right: 0px; */
          border: 1px solid #ccc;
          border-radius: 2px;
          box-shadow: inset 0 1px #fff, 0 1px #eee;
          background-color: #eee;
          /* background:url('../images/icon.png') -188px -99px; */
          background-image: -webkit-linear-gradient(top, #f0f0f0, #e6e6e6);
          color: #666; 
        } 
        /* 去掉date中上下小三角,但是保留input类型为number的小三角。 */
        input[type=date]::-webkit-inner-spin-button { 
          visibility: hidden; 
        }
        /*----------用来移除叉叉按钮 鼠标移上去还会显示----------*/ 
        /* input[type="date"]::-webkit-clear-button{
         display:none;
        } */
    </style>
</head>
<body>
    <div class="time_box">
        <input type="date">
    </div>
</body>

默认—点击时间表单的效果

在这里插入图片描述

修改完后
在这里插入图片描述

三、以下的囊括了date,datetime,week,time等所用的伪元素:

input::-webkit-datetime-edit{}
input::-webkit-datetime-edit-fields-wrapper{}
input::-webkit-datetime-edit-ampm-field{}
input::-webkit-datetime-edit-day-field{}
input::-webkit-datetime-edit-hour-field{}
input::-webkit-datetime-edit-millisecond-field{}
input::-webkit-datetime-edit-minute-field{}
input::-webkit-datetime-edit-month-field{}
input::-webkit-datetime-edit-second-field{}
input::-webkit-datetime-edit-week-field{}
input::-webkit-datetime-edit-year-field{}
input::-webkit-datetime-edit-ampm-field:focus{}
input::-webkit-datetime-edit-day-field:focus{}
input::-webkit-datetime-edit-hour-field:focus{}
input::-webkit-datetime-edit-millisecond-field:focus{}
input::-webkit-datetime-edit-minute-field:focus{}
input::-webkit-datetime-edit-month-field:focus{}
input::-webkit-datetime-edit-second-field:focus{}
input::-webkit-datetime-edit-week-field:focus{}
input::-webkit-datetime-edit-year-field:focus{}
input::-webkit-datetime-edit-year-field[disabled]{}
input::-webkit-datetime-edit-month-field[disabled]{}
input::-webkit-datetime-edit-week-field[disabled]{}
input::-webkit-datetime-edit-day-field[disabled]{}
input::-webkit-datetime-edit-ampm-field[disabled]{}
input::-webkit-datetime-edit-hour-field[disabled]{}
input::-webkit-datetime-edit-millisecond-field[disabled]{}
input::-webkit-datetime-edit-minute-field[disabled]{}
input::-webkit-datetime-edit-second-field[disabled]{}
input::-webkit-datetime-edit-text{}
input::-webkit-inner-spin-button{}
input::-webkit-calendar-picker-indicator{}
input::-webkit-calendar-picker-indicator:hover{}

四、如何更改时间精确度数(月\周\时分秒)

$('input[name="time"]').change(function(){
		 	var myDate = new Date();  //获取当前时间对象,精确到当前的时、分、秒
		 	
		 	var this_time=$('input[name="time"]').val();//获取用户选择后的时间值
		 
		 	var this_datetime=new Date(this_time);//获取用户选择的时间,生成时间对象  具体时间为时间8:00:00
		 	var year = myDate.getFullYear();	//获取当前时间的年份 格式xxxx 如:2016
		 	var month =myDate.getMonth()+1;		//获取当前时间的月份 格式1-9月为x, 10-12月为xx 如:11
		 	var date = myDate.getDate();		//获取当前时间的日期 格式同月份 如11
		 	 myDate=new Date(year+'-'+month+'-'+date);	//获取根据上述时间生成的时间对象 具体时间为0:00:00 	
		 	var now=new Date(year+'-'+month+'-'+date+' 8:00:00'); 
		 	myDate.setDate(now.getDate()-7); //设置now对象相应日期的七天前日期 具体时间为0:00:00
		 	if(this_datetime<myDate||this_datetime>now){	//时间对象可以直接比较大小
		 		alert('拜访时间需选择今天及以前7天内的时间');
		 		$('input[name="time"]').val('');	
		 	};

具体的方法在代码和注释里都做了说明,里面有一个坑就是:我们在自己设置时间对象时如new Date(‘2016-11-11’),生成的时间2016-11-11 0:00:00;
而当我们在时间控件里选择时间如:2016-11-11,然后用这个时间值设置时间对象new Date(value),生成的时间却是2016-11-11 8:00:00,这可能和我们国家的时间控件按北京时间进行了一些修改有关,但这毕竟在我们用js进行时间对比时会造成一定的判断错误,需要注意!

五、如何设置时间的最大选择时间

做项目时在用户信息中添加了 ‘出生年月’ 这一字段

当时就直接就在页面上写了H5的新特征 input 标签 type=‘date’

<div class="form-group">
    <label class="col-sm-3 control-label">出生年月</label>
	<div class="col-sm-9">
	    <input type="date" class="form-control" placeholder="请输入出生年月"
		name="UserInfoFormMap.birthday" id="birthday" value="" max="">
    </div>
</div>

写完之后我就寻思着用户的非法操作,比如选择一个大于当前时间的日期作为生日

这肯定是不合理的

于是我就设置了标签的max 属性,如下

<div class="form-group">
	<label class="col-sm-3 control-label">出生年月</label>
	<div class="col-sm-9">
		<input type="date" class="form-control" placeholder="请输入出生年月"
			name="UserInfoFormMap.birthday" id="birthday" value="" max="2018-6-28">
	</div>
</div>

在这里插入图片描述
结果F5刷新,设置倒是设置上去了,就是没效果
在这里插入图片描述
依然可以选择大于我设置的 ‘2018-6-28’

结果没想到是因为,max中设置时间的话,小于10的数字,要用 ‘0’补齐,如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看得出,大于我设置的 ‘2018-06-28’ 已经不能被选择了 !欧了`

不过把程序写入死值,是不是显得不够专业

好,接下来贴一段js,来设置他能够动态的禁用大于当前时间的日期

$(function(){
       //得到当前时间
	var date_now = new Date();
	//得到当前年份
	var year = date_now.getFullYear();
	//得到当前月份
	//注:
	//  1:js中获取Date中的month时,会比当前月份少一个月,所以这里需要先加一
	//  2: 判断当前月份是否小于10,如果小于,那么就在月份的前面加一个 '0' , 如果大于,就显示当前月份
	var month = date_now.getMonth()+1 < 10 ? "0"+(date_now.getMonth()+1) : (date_now.getMonth()+1);
	//得到当前日子(多少号)
	var date = date_now.getDate() < 10 ? "0"+date_now.getDate() : date_now.getDate();
	//设置input标签的max属性
	$("#birthday").attr("max",year+"-"+month+"-"+date);
})

F5刷新页面,ok了!

发布了34 篇原创文章 · 获赞 2 · 访问量 893

猜你喜欢

转载自blog.csdn.net/xcbzsy/article/details/103599534
今日推荐