`

javascript日期处理-通过一个字符串的日期得到所在周的第一天和最后一天

阅读更多
工作中碰到一个需求,知道一个js字符串“2008-10-31”,得到这个日期所在周及其上一周的第一天和最后一天。

      值得一提的是关于周的问题,西方的周的第一天是周日,最后一天是周六。而对于中国来说,习惯上的周的第一天是周一,最后一天是周日。比如说“2008-10-31”按西方来说第一天是:2008-10-26周日,最后一天是“2008-11-01”周六,而我工作中所要用到的周是“中国式”的,第一天是2008-10-27周一,最后一天是2008-11-02周日。

      方法如下:

     

1.编写日期处理函数



//得到每周的第一天(周一)
function getFirstDateOfWeek(theDate){
 var firstDateOfWeek;
 theDate.setDate(theDate.getDate() + 1 - theDate.getDay()); 
 firstDateOfWeek = theDate;
 return firstDateOfWeek; 
}
//得到每周的最后一天(周日)
function getLastDateOfWeek(theDate){
 var lastDateOfWeek;
 theDate.setDate(theDate.getDate() +7 - theDate.getDay());
 lastDateOfWeek = theDate;
 return lastDateOfWeek; 
}

//得到上周的第一天(周一)
function getPreviousFirstDateOfWeek(theDate){
 var firstDateOfWeek;
 theDate.setDate(theDate.getDate() - 6 - theDate.getDay()); 
 firstDateOfWeek = theDate;
 return firstDateOfWeek; 
}
//得到上周的最后一天(周日)
function getPreviousLastDateOfWeek(theDate){
 var lastDateOfWeek;
 theDate.setDate(theDate.getDate() +7 - theDate.getDay());
 lastDateOfWeek = theDate;
 return lastDateOfWeek; 
}



2.编写格式化函数,以把得到的日期类型的数字转化成可以自己需要的字符串



//把时间类型的数字转换为各种需要的字符串

function   MM_dateFormat(rq,fenge)   {             
  //格式化日期显示   
  //fenge   =   0     :2006-02-28   12:34:23   
  //fenge   =   1     :2006-02-28   
  //fenge   =   2     :2006年2月28日     
  //fenge   =   3     :2月28日   
  //fenge   =   4     :28/2   
  //fenge   =   5     :二○○六年二月二十八日   
  //fenge   =   6     :12:34:23   
  //fenge   =   7     :20060228
  if   ((fenge==null)||(fenge==""))   fenge   =   0;   
  if   ((rq   =="")||(rq   ==null))   var   tmpDate   =   new   Date();   else     var   tmpDate   =   new   Date(rq);   
  var   result   =   "";   
  switch(fenge)   {            
  case   1:   
  result   +=   tmpDate.getFullYear()+"-";   
  if   ((tmpDate.getMonth()+1)<10)   result   +=   "0"+(tmpDate.getMonth()+1)+"-";   else   result   +=   (tmpDate.getMonth()+1)+"-";   
  if   (tmpDate.getDate()<10)   result   +=   "0"+tmpDate.getDate();   else   result   +=   tmpDate.getDate();   
  break;   
  case   2:   
  result   =   tmpDate.getFullYear()+"年"+(tmpDate.getMonth()+1)+"月"+tmpDate.getDate()+"日";   
  break;   
  case   3:   
  result   =   (tmpDate.getMonth()+1)+"月"+tmpDate.getDate()+"日";   
  break;   
  case   4:   
  result   =   tmpDate.getDate()+"/"+(tmpDate.getMonth()+1);   
  break;   
  case   5:   
  var   zhifu=   "○一二三四五六七八九十";   
  var   zhrq   ="";   
  var   nan   =   String(tmpDate.getFullYear());   
  for   (iii=0;iii<nan.length;iii++)   {   zhrq   +=   zhifu.substr(nan.substr(iii,1),1);   }   
  zhrq   +=   "年";   
  var   nan   =   String(tmpDate.getMonth()+1);   
  if   (nan.length   ==   2)   {   
  if   (nan.substr(0,1)=="1")   zhrq   +=   "十";   else   zhrq   +=   zhifu.substr(nan.substr(0,1),1)+"十";     
  if   (nan.substr(1,1)=="0")   zhrq   +=   "月";   else   zhrq   +=   zhifu.substr(nan.substr(1,1),1)+"月"   
  }   else   {   
  zhrq   +=   zhifu.substr(nan.substr(0,1),1)+"月";   
  }   
  var   nan   =   String(tmpDate.getDate());   
  if   (nan.length   ==   2)   {   
  if   (nan.substr(0,1)=="1")   zhrq   +=   "十";   else   zhrq   +=   zhifu.substr(nan.substr(0,1),1)+"十";     
  if   (nan.substr(1,1)=="0")   zhrq   +=   "日";   else   zhrq   +=   zhifu.substr(nan.substr(1,1),1)+"日"   
  }   else   {   
  zhrq   +=   zhifu.substr(nan.substr(0,1),1)+"日";   
  }   
  result   =   zhrq;   
  break;   
  case   6:   
  if   (tmpDate.getHours()<10)   result   +=   "0"+tmpDate.getHours();   else   result   +=   ""+   tmpDate.getHours();  
  if   (tmpDate.getMinutes()<10)   result   +=   ":0"+tmpDate.getMinutes();   else   result   +=   ":"+   tmpDate.getMinutes();  
  if   (tmpDate.getSeconds()<10)   result   +=   ":0"+tmpDate.getSeconds();   else   result   +=   ":"+   tmpDate.getSeconds();  
  break;   
  case   7:   
  result   +=   tmpDate.getFullYear();   
  if   ((tmpDate.getMonth()+1)<10)   result   +=   "0"+(tmpDate.getMonth()+1);   else   result   +=   (tmpDate.getMonth()+1);   
  if   (tmpDate.getDate()<10)   result   +=   "0"+tmpDate.getDate();   else   result   +=   tmpDate.getDate();   
  break;  
  default:   
  result   +=   tmpDate.getFullYear()+"-";   
  if   ((tmpDate.getMonth()+1)<10)   result   +=   "0"+(tmpDate.getMonth()+1)+"-";   else   result   +=   (tmpDate.getMonth()+1)+"-";   
  if   (tmpDate.getDate()<10)   result   +=   "0"+tmpDate.getDate();   else   result   +=   tmpDate.getDate();   
  if   (tmpDate.getHours()<10)   result   +=   "   0"+tmpDate.getHours();   else   result   +=   "   "+   tmpDate.getHours();   
  if   (tmpDate.getMinutes()<10)   result   +=   ":0"+tmpDate.getMinutes();   else   result   +=   ":"+   tmpDate.getMinutes();   
  if   (tmpDate.getSeconds()<10)   result   +=   ":0"+tmpDate.getSeconds();   else   result   +=   ":"+   tmpDate.getSeconds();   
  break;   
  }   
  return   result   
  }   



3.处理字符串,以使其转换成js的日期类型。



//取得处理字符串,然后转换成日期类型。

var   s   =   "2008-02-15";   
s = s+"   00:00:00";
var   tD   =   new   Date(Date.parse(s.replace(/-/g,   "/")));  


4.调用测试



//得到上周的第一天以及最后一天。

var lWeekFirstDay = getPreviousFirstDateOfWeek(tD).toLocaleString();
var lWeekLastDay = getPreviousLastDateOfWeek(tD).toLocaleString();

var ch2 = MM_dateFormat(lWeekFirstDay,7);
var ch3 = MM_dateFormat(lWeekLastDay,7);

 

alert("上周一的时间是:" + ch2);
alert("上周日的时间是:" + ch3 );



//得到本周的第一天以及最后一天。


var nWeekFirstDay = getFirstDateOfWeek(tD).toLocaleString();
var nWeekLastDay= getLastDateOfWeek(tD).toLocaleString();
var ch = MM_dateFormat(nWeekFirstDay,7);
var ch1 = MM_dateFormat(nWeekLastDay,7);
alert("本周一的时间是:" + ch);
alert("本周日的时间是:" + ch1);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics