zoukankan      html  css  js  c++  java
  • 输入你的生日某年某月某日,判断这一天是这一年的第几天、星期几?

     输入你的生日某年某月某日,判断这一天是这一年的第几天、星期几?
     
    birth对象中包含输入的人的出生年月日数据。
      // birth对象中包含输入的人的出生年月日数据。
      6     var birth = {
      7       year: 2003,
      8       month: 7,
      9       date: 30
     10     };

    参考代码:(参考代码很可能存在什么问题,该如何优化?)

      1   /* 输入你的生日某年某月某日,判断这一天是这一年的第几天、星期几? */
      2 
      3    /* 可以扩展为查询古人出生日是星期几 */
      4 
      5     // birth对象中包含输入的人的出生年月日数据。
      6     var birth = {
      7       year: 2003,
      8       month: 7,
      9       date: 30
     10     };
     11 
     12     // 判断年份是否是闰年
     13     function leapYear(year) {
     14       var cond1 = year % 4 == 0;
     15       var cond2 = year % 100 != 0;
     16       var cond3 = year % 400 == 0;
     17       //false为平年,true为闰年
     18       if (cond1 && cond2 || cond3) {
     19         return true;
     20       } else {
     21         return false;
     22       }
     23     }
     24     // 判断某年某月某日是该年的第几天
     25     function numDay(year, month, date) {
     26       var leapNumber = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //闰年每月天数
     27       var commonNumber = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //平年每月天数
     28       var num = 0;
     29       if (leapYear(year)) {
     30         for (var i = 0; i < month - 1; i++) {
     31           num += leapNumber[i];
     32         }
     33       } else {
     34         for (var i = 0; i < month - 1; i++) {
     35           num += commonNumber[i];
     36         }
     37       }
     38       num += date;
     39       return num;
     40 
     41     }
     42     var a=numDay(birth.year, birth.month, birth.date);
     43 
     44     console.log('你在当年的第'+a+'天出生');
     45 
     46 
     47     // 获取当天的date对象
     48     var now = {
     49       year: new Date().getFullYear(),
     50       month: new Date().getMonth() + 1,
     51       date: new Date().getDate(),
     52       week: new Date().getDay()
     53     }
     54     // birthDay为出生年的第几天,nowDay为今年的第几天,middleDay为中间间隔年共计的天数
     55     var birthDay = numDay(birth.year, birth.month, birth.date);
     56     var nowDay = numDay(now.year, now.month, now.date);
     57     var middleDay = 0;
     58     var arr = [];
     59     var result = 0;
     60     if (birth.year < now.year) {
     61       // 如果今年不是出生年
     62       //birthDay为出生时到岁末的天数
     63       if (leapYear(birth.year)) {
     64         birthDay = 366 - birthDay;
     65       } else {
     66         birthDay = 365 - birthDay;
     67       }
     68 
     69       for (var i = birth.year + 1; i < now.year; i++) {
     70         if (leapYear(i)) {
     71           arr.push(366);
     72         } else {
     73           arr.push(365);
     74         }
     75       }
     76       for (var i = 0; i < arr.length; i++) {
     77         middleDay += arr[i];
     78       }
     79       console.log(middleDay);
     80       result = birthDay + middleDay + nowDay;
     81     } else if (birth.year == now.year) {
     82       // 如果今年是出生年
     83       result = numDay(now.year, now.month, now.date) - numDay(birth.year, birth.month, birth.date);
     84 
     85     } else {
     86       alter('出生日期不能迟于当前日期');
     87     }
     88 
     89     result %= 7;
     90 
     91     /* 如何根据余数来判断星期几?
     92      *可以视为周期为7的周期函数,f(n)=f(n-7),在当前日期的基础上,向前推余数的天数,即可获得那天的星期
     93      * 
     94      */
     95     if (now.week - result < 0) {
     96       birth.week = now.week - result + 7;
     97 
     98     } else {
     99       birth.week = now.week - result;
    100     }
    101     console.log('今天' + now.week);
    102     console.log(birth.week);
    103     switch (birth.week) {
    104       case 0:
    105         console.log('星期日')
    106         break;
    107       case 1:
    108         console.log('星期一')
    109         break;
    110       case 2:
    111         console.log('星期二')
    112         break;
    113       case 3:
    114         console.log('星期三')
    115         break;
    116       case 4:
    117         console.log('星期四')
    118         break;
    119       case 5:
    120         console.log('星期五')
    121         break;
    122       case 6:
    123         console.log('星期六')
    124         break;
    125       default:
    126         console.log('出现错误');
    127     }
    128 
    129     console.log(result);
     
     
  • 相关阅读:
    android学习第一天
    定力
    C++ 虚基类表指针字节对齐
    c++内存对齐 转载
    #Pragma Pack(n)与内存分配
    c++ data语意学
    point类型·
    对象内存 (扩展 Data Structure Alignment)
    reinterpret_cast and const_cast
    static_cast AND dynamic_cast
  • 原文地址:https://www.cnblogs.com/f6056/p/13405594.html
Copyright © 2011-2022 走看看