博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS日历,可获得指定日期周数及星期几
阅读量:6218 次
发布时间:2019-06-21

本文共 2107 字,大约阅读时间需要 7 分钟。

需求来自一个朋友:编写一个简易日历。在文本框中输入要查找的日期,程序可以计算出这一天处在该年份的第几周,并且能判断出这一天到底是星期几。

应为要有交互,选择了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()]);}
View Code

调试过程中遇到了许多意外的错误,如类型的不匹配带来的计算错误,如数字的舍入问题;

在队友的协助下,他负责审核和协助抓虫子,我负责实施和编码;
在最后一个环节,对输入值的测试中,我们很好的相互协助,分析不同的输入情况,涵盖了各种可能的意外,很快的完成了功能的完善;
下面是对输入值的判断是否允许的代码 :

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 ;}

 

 

转载地址:http://pzoja.baihongyu.com/

你可能感兴趣的文章
数据结构与算法----->数据结构----->红-黑树
查看>>
Cable master
查看>>
Docker - mysql
查看>>
Attempting to add QLayout "" to MainWindow "", which already has a layout
查看>>
ArcGIS10.1的安装问题
查看>>
Android Studio中 图片资源存在但是运行时报错的问题
查看>>
vue生命周期(简短精干篇)
查看>>
c#实现识别图片上的验证码数字
查看>>
php编译安装过程中遇到问题
查看>>
huffman树即Huffma编码的实现
查看>>
样式问题
查看>>
Android服务端本地窗口FramebufferNativeWindow
查看>>
fseek()函数
查看>>
haystack+Elasticsearch搜素引擎
查看>>
C# Winform向网页传值
查看>>
Java 设计模式学习总结(下)
查看>>
【leetcode】1046. Last Stone Weight
查看>>
ES6新特性2:变量的解构赋值
查看>>
Go环境下,编译运行etcd与goreman集群管理(1)
查看>>
Linux内核数据结构
查看>>