js判断时间是属于第几周?

yibo2010 2010-09-01 03:46:04
给个时间 如何判断是属于第几周的 要在页面做判断。 要求两个时间是属于同一个周并且起始时间要在填表时间之后


<td>
起始时间
</td>
<td>
<html:text property="zhoujihua.oazjhBeginDate" onfocus="calendar()" />
</td>
<td>
完成时间
</td>
<td>
<html:text property="zhoujihua.oazjhEndDate" onfocus="calendar()" />
</td>
<td>
填表日期
</td>
<td>
<html:text property="zhoujihua.oazjhTianBiaoDate" value="<%=danjuriqi%>" />
</td>



要求两个时间是属于同一个周并且起始时间要在填表时间之后
...全文
611 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yibo2010 2010-09-02
  • 打赏
  • 举报
回复
那一定 !
苹果的小弟 2010-09-02
  • 打赏
  • 举报
回复
这个一天中的 几时几分几秒 并不和 第几周 有关系 呵呵
所以 yyyy-MM-dd HH:mm:ss 时间格式 应该没有影响的 呵呵
记得给分 哈哈
yibo2010 2010-09-02
  • 打赏
  • 举报
回复
可以了 !
苹果的小弟 2010-09-02
  • 打赏
  • 举报
回复
自己按照那个调整嘛,我想应该没多大影响的哦,记得接帖子哦
yibo2010 2010-09-01
  • 打赏
  • 举报
回复
我如果把时间设置成 "yyyy-MM-dd HH:mm:ss" 会不会有影响呢?
yibo2010 2010-09-01
  • 打赏
  • 举报
回复
差不多可以了
苹果的小弟 2010-09-01
  • 打赏
  • 举报
回复
注意日期的 格式 是 YYYY-MM-DD
苹果的小弟 2010-09-01
  • 打赏
  • 举报
回复
代码已出 你可以测试下 要是有什么不对的 可以改 呵呵
苹果的小弟 2010-09-01
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<table>
<td>
起始时间
</td>
<td>
<input type="text" id="oazjhBeginDate" name="oazjhBeginDate" value="" onblur="checkDate();"/>
</td>
<td>
完成时间
</td>
<td>
<input type="text" id="oazjhEndDate" name="oazjhEndDate" value="" onblur="checkDate();" />
</td>
<td>
填表日期
</td>
<td>
<input type="text" id="oazjhEndDate" name="oazjhTianBiaoDate" value="" onblur="checkDate();" />
</td>

</table>
</BODY>
<script>
// alert(getNthWeek('2010-01-01'));
function checkDate(){
//首先声明 日期格式 为 yyyy-mm-dd
var oazjhBeginDate = document.getElementById("oazjhBeginDate").value; //起始时间
var oazjhEndDate = document.getElementById("oazjhEndDate").value;//完成时间
var oazjhTianBiaoDate = document.getElementById("oazjhTianBiaoDate").value;//填表时间
// alert(oazjhBeginDate);
// alert(oazjhEndDate);
// alert(oazjhTianBiaoDate);
if(oazjhBeginDate !="" && oazjhEndDate !="" && oazjhTianBiaoDate !=""){
// alert(1);
if(oazjhBeginDate.substring(0,4) !=oazjhEndDate.substring(0,4)){
alert("起始时间和完成时间不在同一年");
return ;
}
//如果 起始时间和 完成时间在 同一年 判断 填表时间>完成时间 >起始时间
var oazjhBeginDateNew = oazjhBeginDate.replace(/-/g,"");
var oazjhBeginDateNew = oazjhEndDate.replace(/-/g,"");
var oazjhTianBiaoDateNew = oazjhTianBiaoDate.replace(/-/g,"");
if(oazjhBeginDateNew > oazjhBeginDateNew ){
alert("起始时间要小于完成时间");
return ;
}
else
if(oazjhBeginDateNew > oazjhTianBiaoDateNew ){
alert("填表时间大于完成时间");
return ;
}
//时间大小验证完毕后 验证 起始时间 和 完成时间 是否在同一周
var week1 = getNthWeek(oazjhBeginDate); //起始时间 的周数
var week2 = getNthWeek(oazjhEndDate);// 完成时间的周数
if(week1 != week2){
alert("起始时间 和 完成时间 必须在同一周 请从新选择");
return ;
}
}
}
function getNthWeek(sDate)
{
//返回整数或者两位小数的浮点数
Number.prototype.fmtRtnVal = function(intOrFloat){
return(intOrFloat == 0 ? Math.floor(this):parseInt(this*100)/100);
}

/*功能:返回两日期之差
*参数:pd PowerDate对象
* type: 返回类别标识.yy:年,mm:月,ww:周,dd:日,hh:小时,mi:分,ss:秒,ms:毫秒
* intOrFloat :返回整型还是浮点型值 0:整型,不等于0:浮点型
* output : 输出提示,如:时间差为#周!
*/
Date.prototype.calDateDistance = function (date,type,intOrFloat,output){
if(typeof(date) != "object" || !(/Date/.test(date.constructor)))
throw new Error(-1,"calDateDistance(date,type,intOrFloat)的date参数为Date类型.");
type = (type==null?'dd':type);
if(!((new RegExp(type+",","g")).test("yy,mm,ww,dd,hh,mi,ss,ms,")))
throw new Error(-1,"calDateDistance(pd,type,intOrFloat,output)的type参数为非法.");
var iof = (intOrFloat==null?0:intOrFloat);
var miSecMain = this.valueOf();
var miSecSub = date.valueOf();
var num=0;
switch(type){
case "yy": num = this.getFullYear() - date.getFullYear(); break;
case "mm": num = (this.getFullYear() - date.getFullYear())*12+this.getMonth()-date.getMonth(); break;
case "ww": num = ((miSecMain-miSecSub)/7/86400000).fmtRtnVal(iof); break;
case "dd": num = ((miSecMain-miSecSub)/86400000).fmtRtnVal(iof); break;
case "hh": num = ((miSecMain-miSecSub)/3600000).fmtRtnVal(iof); break;
case "mi": num = ((miSecMain-miSecSub)/60000).fmtRtnVal(iof); break;
case "ss": num = ((miSecMain-miSecSub)/1000).fmtRtnVal(iof); break;
case "ms": num = (miSecMain-miSecSub);break;
default: break;
}
if(output)
return output.replace(/#/g," "+num+" ");
else return num;
}

//根据日期返回该日期所在年的周数
Date.prototype.getWeekNum = function (){
var dat = new Date(this.getFullYear(),0,1);
var week = dat.getDay();
week = (week==0?7:week);
var days = this.calDateDistance(dat,"dd")+1;
return((days + 6 - this.getDay() - 7 + week)/7);
}
//var date = new Date();
var year = sDate.substr(0,4);
var month = sDate.substr(5,2);
var day = sDate.substr(8,2);
var temDate = month+'/'+day+'/'+year;
var date = new Date(Date.parse(temDate));

return date.getWeekNum()+1
}



</script>
</HTML>
closewbq 2010-09-01
  • 打赏
  • 举报
回复
JS时间对象的API
你可以参考下。你可以获取起始时间的对象,然后计算出这周的起始时间和结束日期,然后和你的结束日期去比较就行了!
苹果的小弟 2010-09-01
  • 打赏
  • 举报
回复
OK 等等 我马上给你写出来
yibo2010 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 b5830440 的回复:]
楼主 是不是 起始时间 和完成时间 要在同一年的同一周,然后填表时间 比完成时间大 就可以了 ?????
[/Quote]

对是那样 判断是同一周就行了
苹果的小弟 2010-09-01
  • 打赏
  • 举报
回复
楼主 是不是 起始时间 和完成时间 要在同一年的同一周,然后填表时间 比完成时间大 就可以了 ?????
dqsweet 2010-09-01
  • 打赏
  • 举报
回复
text里的值转换为Date对象

起始时间:startTime
填表时间:fillTime




var start=startTime.getDay();
var fill=fillTime.getDay();
if(start>=fill&&(startTime.getTime()-fillTime.getTime()<=(6-fill)*24*60*60*1000))
{
alert("格式正确!");
}

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧