前面有2篇已经介绍过js比较日期字符串和js从当前日期推算开始日期
链接:js比较日期字符串
本篇介绍js日期转换综合问题(如图)
根据比价期数(格式为YYYYmmdd)切换近期日期和远期日期
期数下拉框html
<select id="comparePeriod" class="easyui-combobox" style="width:173px;" name="comparePeriod">
#foreach($item in ${periods})
<option value="${item.comparePeriod}" #if(1 == ${item.isCurr}) selected #end>${item.comparePeriod}</option>
#end
</select>
近远期日期html
<label style="font-size:13px;">近期日期:</label>
<label style="font-size:13px;" id="beginNearDate">${period.beginNearDate}</label>
<label style="font-size:13px;">至</label>
<label style="font-size:13px;" id="endDate1">${period.endDate}</label>
<label style="font-size:13px;">远期日期:</label>
<label style="font-size:13px;" id="beginDate">${period.beginDate}</label>
<label style="font-size:13px;">至</label>
<label style="font-size:13px;" id="endDate2">${period.endDate}</label>
之前一篇已经介绍过如何加ajax监听事件,本章不再赘述可查看链接: jquery ajax监听事件
js代码如下
// 监听器
function ajaxListener(){
newComparePeriod = $('#comparePeriod').combobox('getValue');
if(newComparePeriod == oldComparePeriod)
return ;
oldComparePeriod = newComparePeriod;
//将字符串转为日期格式
var endDate = changeDate(oldComparePeriod);
//近期日期,远期日期,结束日期
var beginNearDateString = getDate(endDate,20);
var beginDateString = getDate(endDate,180);
var endDateString = getDate(endDate,0);
//放值
document.getElementById('beginNearDate').innerText=beginNearDateString;
document.getElementById('beginDate').innerText=beginDateString;
document.getElementById('endDate1').innerText=endDateString;
document.getElementById('endDate2').innerText=endDateString;
/*
$('#beginNearDate').textbox('setValue',beginNearDateString);
$('#beginDate').textbox('setValue',beginDateString);
$('#endDate1').textbox('setValue',endDateString);
$('#endDate2').textbox('setValue',endDateString);
*/
}
function changeDate(comparePeriod){
//YYYYddmm格式转为YYYY/mm/dd
comparePeriod = changeFormate(comparePeriod);
//将转换后的字符串转为Date类型
var date=Date.parse(comparePeriod);
return date;
}
//格式转换
function changeFormate(value){
value = value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6, 8);
var regEx = new RegExp("\\-","gi");
value = value.replace(regEx,"/");
return value;
}
// 获取近远期日期,date为毫秒
function getDate(date,value){
var myDate = new Date(date);
var year =myDate.getFullYear(); //获取当前年
var month = myDate.getMonth()+1; //获取当前月
var day = myDate.getDate(); //获取当前日
var timeMin= new Date(myDate-(1000*3600*24*value));//取需要提前到某天的时间戳
var timeMinY=timeMin.getFullYear();
var timeMinM=timeMin.getMonth()+1;
var timeMinD=timeMin.getDate();
var dateString = timeMinY+"-"+num0(timeMinM)+"-"+ num0(timeMinD);
return dateString;
}
// 时间补0
function num0(num){
if(num-10 < 0){
num = "0" + num;
}
return num;
}