js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)


Posted in Javascript onMarch 14, 2014

应为要有交互,选择了Js来实现,也算是 结对编程 的初试吧。 我将显示部分用html 写好,点击的按钮触发事件函数是check();

function onCheck(){ 
var Year = document.getElementById("year").value; //获取文本框的“年” var theYear =Year * 1; //转换为number类型 //alert(theYear); // 获取月值 
var month = document.getElementById("month"); 
var index1=month.selectedIndex; var theMonth = month.options[index1].value; //获取月值 
var day = document.getElementById("day"); 
var index2=day.selectedIndex; 
var theDay = day.options[index2].value;
// 输入值判断部分
...
//调用核心函数
days(theYear,theMonth,theDay); 
}

核心函数days如下:

function days(year,month,day) { 
    var days = 0;  //表示改日期为当年的第几天
    //累加月天数
    for(var i = 1; i < month; i++ ){
    switch(i){
    //大月的情况加31
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:{
    days += 31;
    break;
    }
    //小月的情况加30
    case 4:
    case 6:
    case 9:
    case 11:{
    days += 30;
    break;
    }
    //二月的情况,根据年类型来加
    case 2:{
        if(isLeapYear(year)){
        days += 29; //闰年加29
        }
        else {
        days += 28;
        }
    break;
    }
    }
}
day = day * 1;
days += day;  //月天数之和加上日天数
var date0 = new Date(year,0,1);   //当年的第一天是周几
//   alert(date0.getDay());
    var date1 = new Date(year,month-1,day); //将日期值格式化,0-11代表1月-12月;
//   alert((days + date0.getDay()+6)/7);
    var nthOfWeek = Math.floor((days + date0.getDay()+6)/7);  //向下取整
//   alert(nthOfWeek);
    var toDay = new Array("星期天","星期一","星期二","星期三","星期四","星期五","星期六"); 
    //day.getDay();根据Date返一个星期中的某其中0为星期日 
    alert("该日期是一年中的第"+days+"天\n"+"     是第"+nthOfWeek+"周的"+toDay[date1.getDay()]);
}

调试过程中遇到了许多意外的错误,如类型的不匹配带来的计算错误,如数字的舍入问题;
在队友的协助下,他负责审核和协助抓虫子,我负责实施和编码;
在最后一个环节,对输入值的测试中,我们很好的相互协助,分析不同的输入情况,涵盖了各种可能的意外,很快的完成了功能的完善;
下面是对输入值的判断是否允许的代码 :

if (isNaN(theYear)|| theYear < 0) {
  alert("输入有误,请重新输入");
  return ;
}
if((theMonth == 2 && theDay > 29 && isLeapYear(theYear))||(theMonth == 2 && theDay > 28 && !isLeapYear(theYear))) {
  alert("输入有误,请重新输入");
  return ;
} 
if((theMonth == 4 || theMonth == 6 || theMonth == 9 || theMonth == 11) && theDay == 31 ) {
  alert("输入有误,请重新输入");
  return ;
}
Javascript 相关文章推荐
用js实现的抽象CSS圆角效果!!
May 03 Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
js常用自定义公共函数汇总
Jan 15 Javascript
原生js实现模拟滚动条
Jun 15 Javascript
jQuery实现简易的天天爱消除小游戏
Oct 16 Javascript
AngularJS基于factory创建自定义服务的方法详解
May 25 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 Javascript
原生js实现弹幕效果
Nov 29 Javascript
使用javascript解析二维码的三种方式
Nov 11 Javascript
javascript将相对路径转绝对路径示例
Mar 14 #Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 #Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 #Javascript
javascript回车完美实现tab切换功能
Mar 13 #Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
Mar 13 #Javascript
JQuery中extend使用介绍
Mar 13 #Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 #Javascript
You might like
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
ECMAScript 创建自己的js类库
2012/11/22 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
JavaScript使用Range调色及透明度实例
2016/09/25 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
替换python字典中的key值方法
2018/07/06 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
.NET笔试题(20个问题)
2016/02/02 面试题
Java基础面试题
2014/07/19 面试题
行政专员岗位职责
2014/01/02 职场文书
廉洁自律承诺书
2014/03/27 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
中学推普周活动总结
2015/05/07 职场文书
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
Win11 21h2可以升级22h2吗?看看你的电脑符不符合要求
2022/07/07 数码科技