Bootstrap

js 给 input type="date" 赋值

  1. 之前偶尔会遇到给日期输入框赋值出现一些问题,现在记录下来,供各位参考。
  2. 页面
<div class="col-lg-6">
	<div class="form-group">
		<label><span style="color: red">*</span>时间</label> 
		<input	class="form-control" id="dodate" name="dodate" type="date" />
	</div>
</div>	
  1. js代码
<script>
	//举个列子,比如 dodte ='Fri Feb 14 10:20:05 CST 2020';将dodate 转化成我们想要的格式
	var dodate = 'Fri Feb 14 10:20:05 CST 2020';
	var now = new Date(dodate); 
	//格式化日
	var day = ("0" + now.getDate()).slice(-2);  
	//格式化月
	var month = ("0" + (now.getMonth() + 1)).slice(-2);  
	var hour = now.getHours();
	var min = now.getMinutes();
	var miao = now.getSeconds();
	//拼装日期格式  
	var date= now.getFullYear()+"-"+(month)+"-"+(day)+" "+hour+":"+min+":"+miao ;  
	//完成赋值  
	$('#dodate').val(date); 
</script>
  1. bug 貌似没完没了,刚看了一下,转换出来的时间有误差 ,原本dodate=‘Fri Feb 14 10:20:05 CST 2020’
    但是 now =‘Sat Feb 15 2020 00:20:05 GMT+0800 (中国标准时间)’,date=‘2020-02-15 0:20:5’;这是为什 么呢,后来发现是时区的问题。
    日期 dodate = ‘Fri Feb 14 10:20:05 CST 2020’ CST表示中国时间,但是CST比格林威治时间晚6个小时。北京时间比比格林威治时间早8个小时。这里dodate 的值为当地时间,即北京时间,所以需要在原来的基础上加上 6+8=14 小时。 因此时间调整为“Fri Feb 14 10:20:05 CST 2020 GMT+8”;
    即: var now = new Date(dodate+“GMT+8”); 就可以了。
;