一、报表常用的前一月、后一月、前一周、后一周。
点前一月能跳转到前一个月,再点后一个月能显示本月(1号凌晨到今天23:59:59),再点后一个月能提示已是最新月份,并且时间不变。
点前一周能跳转到前一周,再点后一周能显示本周(周一到今天23:59:59),再点后一周能提示已是最新周,并且时间不变。
功能可以实现,代码有点冗余,不过删删减减还可以优化一下。
展示页面如下:
二、没积分下载的,具体用到的时间处理的工具js,可以从这里拷贝。
相应的时间处理函数
(1)判断查询日期是否大于今天
function isAfterToday(str) {
//当天凌晨
var timeStamp = new Date(new Date().setHours(0, 0, 0, 0));
//一天是86400秒 故n天前的时间戳为
var tomorrow = timeStamp.getTime()+ 86400000;
console.log("tomorrow:"+tomorrow);
return new Date(str).getTime()-tomorrow>= 0;
}
(2)判断查询日期是否大于今天
function isThisMonth(str) {
var year=new Date(str).getFullYear()-new Date().getFullYear()=== 0;
var month=new Date(str).getMonth()-new Date().getMonth()=== 0;
return year&&month;
}
(3)判断查询日期是否在当前周
function isThisWeek(str) {
var now=new Date();
var week = now.getDay(); //获取时间的星期数
var minus = week ? week - 1 : 6;
now.setDate(now.getDate() - minus); //获取minus天前的日期
var monday=now;
var year=monday.getFullYear();
var month=change(monday.getMonth()+1);
var day=change(monday.getDate());
var today=year + "-" + month + "-" + day;
var compareStr=GetMonday(str);
console.log("today:"+today);
console.log("compareStr:"+compareStr);
return today===compareStr;
}
(4)获取到每月的第一天和最后一天
function getMonthFirstOrLaseDay(date,afterOrBefore){
var month=date.getMonth()+1; //当前月份,1-12
var year = date.getFullYear();
if(afterOrBefore==="before"){
month=month-1;//前一个月份,12月时为-1,1月时为0
if(month===0) {
month=12;
year=year-1;
}
}
if(afterOrBefore==="after"){
month=month+1;//后一个月份,12月时为1,1月时为0
if(month===13){
month=1;
year=year+1;
}
}
if (month < 10) {
month = "0" + month;
}
var firstDay = year+'-' + month+'-' + "01"+" "+"00:00:00";
var myDate = new Date(year, month, 0);
var lastDay = year+'-' + month+'-' + myDate.getDate()+" "+"23:59:59";
console.log("firstDay:"+firstDay+",lastDay:"+lastDay);
return {firstDay:firstDay,lastDay:lastDay}
}
(5)获取周一
function GetMonday(ddReceive) {
var dd=new Date(ddReceive);
var week = dd.getDay(); //获取时间的星期数
var minus = week ? week - 1 : 6;
dd.setDate(dd.getDate() - minus); //获取minus天前的日期
var y = dd.getFullYear();
var m = dd.getMonth() + 1; //获取月份
if (m < 10) {
m = "0" + m;
}
var d = dd.getDate();
if (d < 10) {
d = "0" + d;
}
console.log("monday:"+y + "-" + m + "-" + d);
return y + "-" + m + "-" + d;
}
(6)根据某一时间节点获取指定时间差时
/**
* 根据某一时间节点获取指定时间差时间(年月日时分秒)(目前add的有bug,只支持默认,想算add操作可以将val设置为负数)
* @param op 操作:add-表示在指定时间上加;其余情况为减
* @param lev 指定操作目标:yy-年;mm-月;dd-天;hh-时;ii-分;ss-秒
* @param val 根据指定时间递增或递减的值
* @param date 指定时间,默认为当前
* @param isFormat 是否格式化,false-以'-'分隔时间;true-以'/'分隔时间
* @returns {string|*} 返回时间字符串
*/
function pStrDateTime(op, lev, val, date, isFormat) {
var dt, sTime, str;
date ? dt = new Date(date) : dt = new Date();
// 当操作目标和值均存仔仔才处理时间
if (lev && val) {
switch (lev) {
case "yy":
op == "add" ? dt.setFullYear(dt.getFullYear() + val) : dt.setFullYear(dt.getFullYear() - val);
break;
case "mm":
op == "add" ? dt.setMonth(dt.getMonth() + val) : dt.setMonth(dt.getMonth() - val);
break;
case "dd":
op == "add" ? dt.setDate(dt.getDate() + val) : dt.setDate(dt.getDate() - val);
break;
case "hh":
op == "add" ? dt.setHours(dt.getHours() + val) : dt.setHours(dt.getHours() - val);
break;
case "ii":
op == "add" ? dt.setMinutes(dt.getMinutes() + val) : dt.setMinutes(dt.getMinutes() - val);
break;
case "ss":
op == "add" ? dt.setSeconds(dt.getSeconds() + val) : dt.setSeconds(dt.getSeconds() - val);
break;
}
}
!isFormat ? str = "-" : str = "/";
sTime = dt.getFullYear() + str + (dt.getMonth() + 1) + str + dt.getDate();
sTime += " " + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();
sTime = _callbackNormTime(sTime);
return sTime;
}