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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值