zoukankan      html  css  js  c++  java
  • 日期计算

    开始前先介绍一下《闰年》

    地球绕太阳转一周的实际时间是365天5时48分46秒。如果一年只有365天,那么每年就多出5个小时。4年多出的23小时15分4秒,差不多就等于1天。于是决定每四年增加1天。但是,它比一天24小时又少了约45分钟,如果每100年有25个闰年的话,就少了18时43分20秒,这就差不多等于1天了,这显然不合适。
    可以算出,每年多出5小时48分46秒,100年就多出581小时16分40秒。而25个闰年需要25*24=600小时。581小时16分40秒只够24个闰年(24*24=576小时),于是决定每100年只安排24个闰年(世纪年不作闰年)。但是这样每100年又多出了5小时16分40秒(581小时16分40秒-576小时),于是又决定每400年增加一个闰年。这样就比较接近实际情况了。
    根据以上的,决定闰年按照以下的计算规则:闰年应能被4整除(如2004年是闰年,而2001年不是闰年),但不是所有被4整除的年份都是闰年。在能被100整除的年份中,又同时能被400整除的年份才是闰年(如2000年是闰年),能被100整除而不能被400整除的年份(如1800、1900、2100)不是闰年。这是国际公认的规则。只说“能被4整除的年份就是闰年”是不准确的

    月份里边有31天的是[1,3,5,7,8,10,12]

    月份里边有30天的是[4,6,9,11]

    2月份为特殊月正常天数为28天遇到闰年是29天

    产生以下算法

    var day31 = [1,3,5,7,8,10,12];
    var day30 = [4,6,9,11];
    var dayNub = 0;
    
    function inArray(array,mouth){
        for(var i in array){
            if(array[i] == mouth){
                return true;
            }
        }
        return false;
    }
    if(inArray(day31,月份)){
        dayNub = 31;
    }else if(inArray(day30,月份)){
        dayNub = 30;
    }else{
        if((年份%4 == 0 && 年份%100 != 0) || 年份%400 == 0){
            dayNub = 29;
        }else{
            dayNub = 28;
        }
    }
    for(var i=0;i<=dayNub;i++){
        进行select字段中的添加
    }
  • 相关阅读:
    hdu--2578--与女孩约会
    hdu--2588--欧拉函数||容斥原理
    hdu--2586--lca_tarjan<证明tarjan这个人很流弊>
    hdu--3743--归并排序<自顶向下&&自底向上>2种写法
    hdu--4911--归并排序||树状数组
    hdu--2639--01背包第K解<不同决策的不同解法>
    hdu--2642--二维BIT
    hdu--3833--4000ms才能过的O(N^2)算法
    hdu--3835--最简单的数学..
    hdu--3836--tarjan+缩点
  • 原文地址:https://www.cnblogs.com/BobSky/p/3134381.html
Copyright © 2011-2022 走看看