<HTML><HEAD>
<script type="text/javascript">

//目前只判断了4位有效输入的年份,
//日期输出格式已处理,统一为"yyyy-mm-dd"格式.
<!--
function checkInput(fieldValue,len){ //判断输入是否都为正确数据格式

if(fieldValue.length < 0 || fieldValue.length > len)
{
alert("数据长度不对,请重新填写.年份为四位,如:2006;周次为1-2位,如1或01");
return false;
}
else
{
for(var i = 0 ; i < fieldValue.length; i++ )
{
temp = fieldValue.substr(i,1)
if(isNaN(temp))
{
alert("非法数据输入!只能输入数字,请重新输入.");
return false;
}
}
var msg = false; //处理输入0/00时出现的问题.
for(var i = 0 ; i < fieldValue.length; i++ )
{

tmp = fieldValue.substr(i,1)
if(tmp != "0") { msg = true; }
}
}
if (msg == false) {alert("非法数据输入,数据不能全部为'0',请重新输入.");return false;}

}

function calcu(){
/*==================================================================================*/
//年份特殊判断,目前只实现4为有效数字输入,有空再考虑2位有效数字输入.
//4位可计算出1000--9999年间的任意时间,2位则暂时只计算1900-2099年(暂不设计)
if(document.form1.thisYear.value.length != 4)
{
alert("年份目前只能输入四位有效数字-_-! 请重新输入.");
document.form1.thisYear.focus();
return false;
}
/*==================================================================================*/
if(document.form1.thisYear.value.charAt(0) == "0")
{
alert("年份第一位不能为'0',请重新输入.");
document.form1.thisYear.focus();
return false;
}
//-------------------------------------------------------------------------------------
//判断年份输入是否合法.
if (checkInput(document.form1.thisYear.value,4) == false) { return false; }
//判断周次输入是否合法.
if (checkInput(document.form1.thisWeek.value,2) == false) { return false; }
//-------------------------------------------------------------------------------------

var yearStart = new Date(parseInt(document.form1.thisYear.value),0,1) //设置该年1.1.
var firstDay = yearStart.getDay(); //星期
var yearEnd = new Date(parseInt(document.form1.thisYear.value),11,31) //设置该年12.31.
var endDay = yearEnd.getDay(); //星期
//-------------------------------------------------------------------------------------
//判断输入是否超过最大周次.
var maxWeek; //该年最大周次.1.1.在周一到周四,则为该年第一周,否则为上年最后一周.
if((firstDay>=1&&firstDay<=4)&&(endDay==0||endDay==4||endDay==5||endDay==6))
{
maxWeek = 53; //1.1.和12.31.都在本年,则该年有53周,否则52周
}
else
{
maxWeek = 52;
}
if(parseInt(document.form1.thisWeek.value,10) > maxWeek)
{
alert(document.form1.thisYear.value + " 年只有 " + maxWeek + " 周,请重新填写周次.");
document.form1.thisWeek.focus();
return false;
}
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//对1.1.所在周的前后几天特殊处理.
if(firstDay>=0&&firstDay<=4) {other = firstDay - 1;}
else {other = firstDay - 8}
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//时间调整,得出要计算周的起/始时间.
//距离当年1.1.的总天数
days = (parseInt(document.form1.thisWeek.value,10)-1)*7 - other;
//转换成Ms.......
var oneMinute = 60 * 1000;
var oneHour = oneMinute * 60;
var oneDay = oneHour * 24;
//1.1.至1/1/70的毫秒数
var dateInMs = yearStart.getTime();
//当前所选周第一天离1/1/70的毫秒数.
dateInMs += oneDay * days
//日期调整(设置1/1/70至今的毫秒数)
yearStart.setTime(dateInMs);
//当前所选周最后一天处理,同上.
var weekEnd = new Date(parseInt(document.form1.thisYear.value),0,1)
var dateInMs1 = weekEnd.getTime ();
dateInMs1 += oneDay * (days + 6);
weekEnd.setTime(dateInMs1)
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//月和日的处理,一位变两位,如:1->01.
var month = yearStart.getMonth() + 1
if(month<10) { month = "0" + month;}
var day = yearStart.getDate();
if(day<10) { day = "0" + day;}
var month1 = weekEnd.getMonth() + 1;
if(month1<10) { month1 = "0" + month1;}
var day1 = weekEnd.getDate();
if(day1<10) { day1 = "0" + day1;}
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//赋值给text框显示.
document.form1.weekTime.value = yearStart.getFullYear() + "-" + month + "-" + day;
document.form1.weekend.value = weekEnd.getFullYear() + "-" + month1 + "-" + day1;
//-------------------------------------------------------------------------------------
}

//-->
</script>
</HEAD>
<BODY>
<form name = "form1">
<P>
<font size=2 color="blue">输入年份/周次,点"计算",程序将自动计算出该年该周次的时间段:</font><br><br>

<font size=2 color="red">年&nbsp;&nbsp;份:<input name = "thisYear" >&nbsp;&nbsp;//填写四位格式的年份,如:2006</font><br>
<font size=2 color="red">周&nbsp;&nbsp;次:<input name = "thisWeek" >&nbsp;&nbsp;//填写要计算的周次,如1或01</font><br>
<font size=2 color="red">时间段:<input name = "weekTime" >至<input name = "weekend" >&nbsp;&nbsp;//不需要填写,程序将自动计算</font><br><br>
<input type = "button" name = "btn" value = "计算" onclick = "calcu()">
<input type = "reset" name = "reset" value = "重置"> </P>
</form>
</BODY>
</HTML>

js 计算某年某周日期范围的更多相关文章

  1. JavaScript(JS)计算某年某月的天数(月末)

    方法1 /** * 获取某年月的天数 * @param year 年 * @param month 月(0-11) * @returns {number} 天数 */ var getDaysOfMon ...

  2. C#关于日期 月 天数 和一年有多少周及根据某年某周获取时间段的计算(转)

    /// 当前月有多少天 /// </summary> /// <param name="y"></param> /// <param na ...

  3. js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数

    js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数 >>>>>>>>>>>>>>>>>& ...

  4. JS计算两个日期时间之差之天数不正确

    做了一个时间倒计时,发现天数总是不正确. js代码: //定义目标日期 var targetTime = new Date(); //目标日期 targetTime.setFullYear(2015, ...

  5. js 计算快速统计中用到的日期

    前言 最近在做统计报表模块,其中查询条件用到了快速查询,主要为了方便客户统计查询常用的几个日期纬度,比如本周.上周.本月.上月.昨日. 使用js计算,主要用到了js Date. getDate().g ...

  6. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  7. JS计算两个日期之间的天数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. PHP计算每月几周,每周的开始结束日期

    PHP计算每月几周,每周的开始结束日期 因为项目中需要一个每周工作计算的功能,具体日期的算法是,把每月拆分成几个周,最后一个星期这个月份的天数不够就补上下个月的. 列如今天8月27星期一,这个月有31 ...

  9. Java获取某年某周的最后一天

    package test; import java.text.SimpleDateFormat; import java.util.Calendar; /** * ClassName: LastDay ...

随机推荐

  1. jQuery异步加载数据添加事件

    几个月前在一个项目中涉及到树形栏,然后看了很多插件,觉得有点麻烦,于是自己写了一个,写着写着就出问题了. 当时项目是通过树形栏进行权限控制的,管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作 ...

  2. jQuery插件实现select下拉框左右选择_交换内容(multiselect2side)

    效果图: 使用jQuery插件---multiselect2side做法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  3. (翻译玩)在使用flask-script的应用上使用gunicorn

    在使用flask-script的应用上使用gunicorn 两周前,我强烈的想要学习一点新知识,像新的语言,新的框架之类的!好让我的大脑忙碌起来,寻找了一些日子后,我决定学习现在越来越流行的云应用平台 ...

  4. python入门安装

    一.在python官网上下载python3.4或python2.7版本,这两个版本目前比较稳定,安装第3方包相对而言没有什么问题. 二.安装成功后,在计算机->属性->高级系统设置-> ...

  5. MSIL

    公共字段Add 将两个值相加并将结果推送到计算堆栈上. Add_Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add_Ovf_Un 将两个无符号整数值相加,执行溢出检查,并且将结 ...

  6. C语言初学 俩数相除问题

    #include<stdio.h> #include<stdlib.h> main() { double a,b;                       scanf(&q ...

  7. SPI协议总结

    四种工作模式: Mode 0 CPOL=0, CPHA=0 Mode 1 CPOL=0, CPHA=1Mode 2 CPOL=1, CPHA=0 Mode 3 CPOL=1, CPHA=1 常使用Mo ...

  8. 命令行工具命令 - run包到手机里

    命令行工具命令 你完全可以选择不输入以下这些命令,执行这些命令的结果与在 Android Studio 中单击"运行"按钮是一样的. chmod +x gradlew - 此命令只 ...

  9. pure.css 学习记录

    兼容性记录: IE 8+ Latest Stable: Firefox, Chrome, Safari iOS 6-8 Android 4.x 处理兼容性 <!--[if lte IE 8]&g ...

  10. Android调用系统的Activity、ContentProvider、Service、Broadcast Receiver

    Intent-------->Action |_____________Activity------------------------------->Intent Action |___ ...