qq_18672093 2015-05-26 07:54 采纳率: 0%
浏览 4526

用js判断当前时间是单周还是双周

我想判断当前时间是单周还是双周,用js写了个demo,效果是实现了,但是不知科学否?有没有更好的方法?

 <script>
    document.write('xx科技有限公司放假时间');
    function getDateIndex(){
        var d = new Date(); //实例化时间函数
        var now = d.getTime(); // 获取距 1970 年 1 月 1 日之间的毫秒数
        var n = now - 259200000; // 由于1970.1.1 是星期四,不是星期一,减去后面三天
        //document.write(now);
        var dayIndex = Math.ceil(n / 86400000) - 1; 
        var weekIndex = Math.ceil(dayIndex / 7);
        var ds = weekIndex % 2; // 判断单双周
        //alert(ds);
        var day = d.getDay(); // 返回一周中的某一天
        if(ds == 0){
            switch(day){
                case 0:
                    x ="今天是单周的星期天,干了一周,累成狗,终于可以休息了,只可惜明天就要上班了。。。";
                    break;
                case 1:
                    x ="今天是单周的星期一,才放一天假。。。";
                    break;
                case 2:
                    x ="今天是单周的星期二,才放一天假。。";
                    break;
                case 3:
                    x ="今天是单周的星期三,才放一天假。。";
                    break;
                case 4:
                    x ="今天是单周的星期四,才放一天假。。";
                    break;
                case 5:
                    x ="今天是单周的星期五,才放一天假。。";
                    break;
                case 6:
                    x ="今天是单周的星期六,才放一天假。。";
                    break;
            }
        }else{
            switch(day){
                case 0:
                    x ="今天是双周的星期天,明天要上班了。。。";
                    break;
                case 1:
                    x ="今天是双周的星期一,两天假哦!!";
                    break;
                case 2:
                    x ="今天是双周的星期二,两天假哦!!";
                    break;
                case 3:
                    x ="今天是双周的星期三,两天假哦!!";
                    break;
                case 4:
                    x ="今天是双周的星期四,两天假哦!!";
                    break;
                case 5:
                    x ="今天是双周的星期五,两天假哦!!";
                    break;
                case 6:
                    x ="今天是双周的星期六,放假休息ing,播种好季节!!";
                    break;
            }   
        }
        alert(x);
    }
    window.onload = getDateIndex;
</script>
  • 写回答

3条回答

  • danielinbiti 2015-05-26 08:17
    关注

    你关键看你单双周怎么定义的,你这算法是每年的1月1日都是星期一,如果不是星期一计算就出问题了。

     <script>
    /**
     * 判断年份是否为润年
     *
     * @param {Number} year
     */
    function isLeapYear(year) {
        return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
    }
    /**
     * 获取某一年份的某一月份的天数
     *
     * @param {Number} year
     * @param {Number} month
     */
    function getMonthDays(year, month) {
        return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
    }26 /**
     * 获取某年的某天是第几周
     * @param {Number} y
     * @param {Number} m
     * @param {Number} d
     * @returns {Number}
     */
    function getWeekNumber(y, m, d) {
        var now = new Date(y, m - 1, d),
            year = now.getFullYear(),
            month = now.getMonth(),
            days = now.getDate();
        //那一天是那一年中的第多少天
        for (var i = 0; i < month; i++) {
            days += getMonthDays(year, i);
        }
    
        //那一年第一天是星期几
        var yearFirstDay = new Date(year, 0, 1).getDay() || 7;
    
        var week = null;
        if (yearFirstDay == 1) {
            week = Math.ceil(days / yearFirstDay);
        } else {
            days -= (7 - yearFirstDay + 1);
            week = Math.ceil(days / 7) + 1;
        }
    
        return week;
    }
    var weekIndex =getWeekNumber(2014,1,6);
    var ds = weekIndex % 2; // 判断单双周
    alert(ds);
    </script>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏