>  기사  >  웹 프론트엔드  >  Node.js는 지정된 날짜, 주 번호 및 요일을 얻기 위해 달력을 구현합니다.

Node.js는 지정된 날짜, 주 번호 및 요일을 얻기 위해 달력을 구현합니다.

高洛峰
高洛峰원래의
2017-02-06 10:47:301037검색

상호작용이 있기 때문에 이를 구현하기 위해 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); 
}

핵심 함수 요일은 다음과 같습니다.

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

더 많은 js 구현을 위해 지정된 날짜, 주 번호 및 요일을 얻을 수 있습니다. 관련 기사를 공유하려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.