1.根据办结类型和办结周期 得到相应的提示和显示相关日期
//根据办结时限和上报周期拿到
/**
* doc_type任务类型 0 -日报 1-周报 2-月报 3-季报
*startTime 你填写的开始时间
*需求:
*
*日报 当前时间大于填写时间 填写时间
* 当前时间小于填写时间 填写时间 大于9点 当前时间的明天 小于9点 当前时间
*周报 当前时间大于填写时间 填写时间
* 当前时间小于填写时间 填写时间 大于7天 当前时间天 小于7天 最近的周五
*月报 当前时间大于填写时间 填写时间
* 当前时间小于填写时间 填写时间 大于一个月 当前时间天 小于一个月 最近的周末
*月报 当前时间大于填写时间 填写时间
* 当前时间小于填写时间 填写时间 大于三个月 当前时间天 小于3个月 最近的季度的最后一天
*/
function changeDate(doc_type,startTime){
if('日报'==doc_type){
var endTime=new Date(startTime);
var today=new Date();
startTime.setDate(endTime.getDate()-1);
if((endTime.getMonth()<today.getMonth()
||(endTime.getMonth()==today.getMonth()&&endTime.getDate()<=today.getDate())
||(startTime.getMonth()==today.getMonth()&&startTime.getDate()<=today.getDate())
&&(today.getHours()<=9)
){
startTime=endTime;
}else{
if(today.getHours()<=9){
startTime=today;
}else{
today.setDate(today.getDate()+1);
startTime=today;
}
}
var begin_date=DateFormat(startTime,'yyyy-M-dd');
$("#send_date_text").val(begin_date);
$("#begin_date_text").val(begin_date);
$("#tips").show();
$("#content").text("!温馨提示:您选择的该工作的上报类型为:"+doc_type+",上报的频率:每天早上9点整(系统会在上报时间当天9点整进行短信提醒)");
}else if('周报'==doc_type){
var endTime=new Date(startTime);
var today=new Date();
var proWeekList=getProWeekList(today);
proWeekList.setDate(proWeekList.getDate()+7);
startTime=proWeekList;
if(endTime.getMonth()<today.getMonth()||
(endTime.getMonth()==today.getMonth()&&endTime.getDate()<=today.getDate())
||(endTime.getMonth()==proWeekList.getMonth()&&endTime.getDate()<=proWeekList.getDate())
){
startTime=endTime;
}else{
startTime=proWeekList
}
var begin_date=DateFormat(startTime,'yyyy-M-dd');
$("#send_date_text").val(begin_date);
$("#begin_date_text").val(begin_date);
var date = begin_date.split("-");
var weeks=new Date(date[0],parseInt(date[1]-1),date[2]);
var weekend=numToChn(weeks.getDay()); //就是星期几啦
$("#tips").show();
$("#content").text("!温馨提示:您选择的该工作的上报类型为:"+doc_type+",上报的频率:每周星期"+weekend+"(系统会在上报时间当天9点整进行短信提醒)");
}else if('月报'==doc_type){
var endTime=new Date(startTime);
var today=new Date();
var lastMonthDay=workToMonth(today.getMonth());
var numToAdd =lastMonthDay-today.getDate();
startTime.setDate(today.getDate()+numToAdd);
startTime.setMonth(today.getMonth());
if(endTime.getMonth()<today.getMonth()||
(endTime.getMonth()==today.getMonth()&&endTime.getDate()<=today.getDate())
||(endTime.getMonth()==startTime.getMonth()&&endTime.getDate()<=startTime.getDate())
){
startTime=endTime;
}else{
today.setDate(today.getDate()+numToAdd);
startTime=today;
}
var begin_date=DateFormat(startTime,'yyyy-M-dd');
$("#send_date_text").val(begin_date);
$("#begin_date_text").val(begin_date);
var date = begin_date.split("-");
var day=date[2];
$("#tips").show();
$("#content").text("!温馨提示:您选择的该工作的上报类型为:"+doc_type+",上报的频率:每月"+day+"号(系统会在上报时间当天9点整进行短信提醒)");
}else if('季报'==doc_type){
var today=new Date();
var today=new Date();
var endTime=new Date(startTime);
//先计算出季报的时间
today=workToSeason(today);
startTime=today;
if(endTime.getMonth()<today.getMonth()||
(endTime.getMonth()==today.getMonth()&&endTime.getDate()<=today.getDate())
||(endTime.getMonth()==startTime.getMonth()&&endTime.getDate()<=startTime.getDate())
){
startTime=endTime;
}else{
today=workToSeason(today);
startTime=today;
}
var begin_date=DateFormat(startTime,'yyyy-M-dd');
$("#send_date_text").val(begin_date);
$("#begin_date_text").val(begin_date);
var date = begin_date.split("-");
var month=date[1].charAt(1);
var day=date[2];
var season=month%3==0?3:month%3;
$("#tips").show();
$("#content").text("!温馨提示:您选择的该工作的上报类型为:"+doc_type+",上报的频率:每季度第"+season+"个月第"+day+"号(系统会在上报时间当天9点整进行短信提醒)");
}
}
//上周的日期
function getProWeekList(date){
var dateTime = date.getTime(); // 获取现在的时间
var dateDay = date.getDay();
var oneDayTime = 24 * 60 * 60 * 1000;
var proWeekList = [];
for(var i = 0; i < 7; i++){
var time = dateTime - (dateDay + (7 - 1 - i)) * oneDayTime;
proWeekList[i] = new Date(time);
}
return proWeekList[4];
}
//当前月的最后一天
function getCurrentMonthLast(){
var date=new Date();
var currentMonth=date.getMonth();
var nextMonth=++currentMonth;
var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
var oneDay=1000*60*60*24;
var lastTime = new Date(nextMonthFirstDay-oneDay);
var month = parseInt(lastTime.getMonth()+1);
var day = lastTime.getDate();
if (month < 10) {
month = '0' + month
}
if (day < 10) {
day = '0' + day
}
return new Date(date.getFullYear() + '-' + month + '-' + day );
}
//时间格式转换工具
var DateFormat = function () {
var
dateReg = /y{3,4}|M{1,2}|m{1,2}|d{1,4}|H{1,2}|h{1,2}|s{1,4}|tt|q/g,
fnLabels = 'yyyy d dddd H m s sss'.split(' '),
fnNames = 'getFullYear getDate getDay getHours getMinutes getSeconds getMilliseconds'.split(' '),
bu0Labels = 'MM dd HH hh mm ss'.split(' '),
plus1 = function (m) {return m-0+1;},
defaultStrings = {
dddd :'日 一 二 三 四 五 六'.split(' '),
M: plus1,
q: plus1,
tt: function (d) {
return d>1 ? 'PM' : 'AM';
}
},
defaultFormat = 'yyyy-MM-dd',
formats = {
h: function (d) {
return d.getHours()%12 || 12;
},
M: function (d) {
return d.getMonth();
},
q: function (d) {
return Math.floor(d.getMonth()/3);
},
tt: function (d) {
return d.getHours()/12;
},
ssss: function (d) {
return bu0(d.getMilliseconds(),4);
}
};
for(var f = fnLabels.length;f--;){
var fl = fnLabels[f].split(':');
(function (ff,nn) {
formats[ff] = function (d) {
return d[nn]();
}
})(fnLabels[f],fnNames[f])
}
for(var b = bu0Labels.length;b--;) {
(function (ff,fn) {
formats[ff] = function (d) {
return bu0(fn(d),2);
}
})(bu0Labels[b],formats[bu0Labels[b].slice(0,-1)])
}
function bu0(src,num) {
return (src+'').length < num ? ('0000'+src).slice(-num) : src;
}
return function (date,options) {
date = date || new Date();
options = options || {};
var format = (typeof options == 'string') ? options :
options.format ? options.format :
defaultFormat;
// console.log(date,format)
return format.replace(dateReg,function (mt) {
var res = formats[mt](date),todo = options[mt] || defaultStrings[mt],ok;
// console.log(mt,todo)
return todo ?
typeof todo == 'function' ? todo(res) : todo[res]
: res;
})
}
}()
//简单的“周几”获取
var chnNumChar = ["一","二","三","四","五","六","七","八",];
var numToChn = function(num){
return chnNumChar[num-1];
}
//简单每个月工作日的获取
var workMonth=["31","28","29","30","31","28","31","30","28","30","31","29","31"]
var workToMonth = function(num){
return workMonth[num];
}
//简答的季度最后一天获取
var workToSeason = function(today){
if(today.getMonth()<="3"){
var addMonth=2-today.getMonth();
var addDay=29-today.getDate()
today.setMonth(today.getMonth()+addMonth);
today.setDate(today.getDate()+addDay);
}else if(today.getMonth()<="6"){
var addMonth=5-today.getMonth();
var addDay=28-today.getDate()
today.setMonth(today.getMonth()+addMonth);
today.setDate(today.getDate()+addDay);
}else if(today.getMonth()<="9"){
var addMonth=8-today.getMonth();
var addDay=30-today.getDate()
today.setMonth(today.getMonth()+addMonth);
today.setDate(today.getDate()+addDay);
}else{
var addMonth=11-today.getMonth();
var addDay=31-today.getDate()
today.setMonth(today.getMonth()+addMonth);
today.setDate(today.getDate()+addDay);
}
return today;
}```
相关时间的处理 :
天数的处理getDate()
月份的处理getMonth()
设置时间到某天
new Date().setMonth(xxx).setDate(xxx)
时间的加减:采用补齐的方法
var addMonth=2-today.getMonth();
var addDay=29-today.getDate()
today.setMonth(today.getMonth()+addMonth);
today.setDate(today.getDate()+addDay);
直接时间运算赋值会出BUG 计算后在赋值
today.setDate(today.getDate()+1);
startTime=today;
不要这样:
startTime=oday.setDate(today.getDate()+1);