场景1:
例如下图,页面上有三个日期类型选择,例如今天是2019.05.20,这天是在5月份里面的,那我就要根据当前日期所在的月份拿到这个月份的第一天和最后一天
场景2:
例如下图,我需要用到当前日期所在的一周的周一至周日的数据,例如今天是2019.05.20,那我就要知道今天所在的那周里面的周一是哪天,周日是哪天,取这个时间段.
场景3:
例如下图:日期类型是单独某一天,默认是当前日期,点击左右箭头,切换日期
下面工具类代码可以实现以上三种场景:
代码:
//获取当前日期yy-mm-dd
//date 为时间对象
function getDateStr3(date) {
var year = "";
var month = "";
var day = "";
var now = date;
year = ""+now.getFullYear();
if((now.getMonth()+1)<10){
month = "0"+(now.getMonth()+1);
}else{
month = ""+(now.getMonth()+1);
}
if((now.getDate())<10){
day = "0"+(now.getDate());
}else{
day = ""+(now.getDate());
}
return year+"-"+month+"-"+day;
}
/**
* 获得相对当前周AddWeekCount个周的起止日期
* AddWeekCount为0代表当前周 为-1代表上一个周 为1代表下一个周以此类推
* **/
function getWeekStartAndEnd(AddWeekCount) {
//起止日期数组
var startStop = new Array();
//一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24;
//获取当前时间
var currentDate = new Date();
//相对于当前日期AddWeekCount个周的日期
currentDate = new Date(currentDate.getTime() + (millisecond * 7*AddWeekCount));
//返回date是一周中的某一天
var week = currentDate.getDay();
//返回date是一个月中的某一天
var month = currentDate.getDate();
//减去的天数
var minusDay = week != 0 ? week - 1 : 6;
//获得当前周的第一天
var currentWeekFirstDay = new Date(currentDate.getTime() - (millisecond * minusDay));
//获得当前周的最后一天
var currentWeekLastDay = new Date(currentWeekFirstDay.getTime() + (millisecond * 6));
//添加至数组
startStop.push(getDateStr3(currentWeekFirstDay));
startStop.push(getDateStr3(currentWeekLastDay));
return startStop;
}
/**
* 获得相对当月AddMonthCount个月的起止日期
* AddMonthCount为0 代表当月 为-1代表上一个月 为1代表下一个月 以此类推
* ***/
function getMonthStartAndEnd(AddMonthCount) {
//起止日期数组
var startStop = new Array();
//获取当前时间
var currentDate = new Date();
var month=currentDate.getMonth()+AddMonthCount;
if(month<0){
var n = parseInt((-month)/12);
month += n*12;
currentDate.setFullYear(currentDate.getFullYear()-n);
}
currentDate = new Date(currentDate.setMonth(month));
//获得当前月份0-11
var currentMonth = currentDate.getMonth();
//获得当前年份4位年
var currentYear = currentDate.getFullYear();
//获得上一个月的第一天
var currentMonthFirstDay = new Date(currentYear, currentMonth,1);
//获得上一月的最后一天
var currentMonthLastDay = new Date(currentYear, currentMonth+1, 0);
//添加至数组
startStop.push(getDateStr3(currentMonthFirstDay));
startStop.push(getDateStr3(currentMonthLastDay));
//返回
return startStop;
}
场景1实现示例:
方法 getMonthStartAndEnd(AddMonthCount) 获得相对当月AddMonthCount个月的起止日期
当AddMonthCount = 0.获取当前月
当AddMonthCount = 1.获取下一个月,2就是下下个月,依次类推
当AddMonthCount = -1.获取上一个月,-2就是上上个月,依次类推
首先定义一个变量,默认为0
点击左箭头就获取上一个月的起止日期,点击右箭头就是获取下一个月的起止日期.
定义一个全局变量monkStartAndEnd,初始值为0,每次点击左箭头就减1,点击右箭头就加1
weekStartAndEnd = ++weekStartAndEnd;
var startStop_mon = getMonthStartAndEnd(monkStartAndEnd);
startTime_mon = startStop_mon[0];
endTime_mon = startStop_mon[1];
//显示时间范围
$("#beginTime").text(startTime_mon + " -- " + endTime_mon);
场景2实现示例:
获取周的起止日期,跟获取月的起止日期做法一样,只是调用方法改为 getWeekStartAndEnd
场景3实现示例:
下一个点击左右箭头就触发的方法,dayAdd(d,flag) 传入当前时间或者时间戳d,传入是增加天数还是减少天数标志flag,调用获取格式化时间的方法getDateStr3(date),返回结果即可
function dayAdd(d,flag) {
//一天的毫秒数
var millisecond = 1000 * 60 * 60 * 24;
//获取当前时间
var currentDate = new Date(d);
if(flag == 0){
//减一天
currentDate = new Date(currentDate.getTime() - millisecond);
}else if(flag == 1){
//加一天
currentDate = new Date(currentDate.getTime() + millisecond);
}
return getDateStr3(currentDate);
}