• 获取某一天是该年中的第多少周


    判断某一天是该年中的第多少周,需要知道该年的第一天是星期几。

    比如第一年第一天是星期一,那么直接获取那一天是该年中的第多少天,取它除以7的上限;

    如果不是星期一,则需要进行如下计算:

    一周是7天,减去那一天星期几,则该礼拜还有 7 – n天结束,再加一天则是下一礼拜。

    示例代码:

       1: //那一年第一天是星期几
       2: var yearFirstDay = new Date(year, 0, 1).getDay() || 7;
       3:  
       4: var week = null;
       5: if (yearFirstDay == 1) {
       6:     week = Math.ceil(days/yearFirstDay);
       7: } else {
       8:     days -= (7 - yearFirstDay + 1);
       9:     week = Math.ceil(days/7) + 1;
      10:     days = Math.max(days, 1);
      11: }

    完整demo代码:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>判定某一天在该年份中是第几周</title>
    <meta name="generator" content="editplus" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta http-equiv='content-type' content='text/html;charset=utf-8'>
    </head>

    <body>

    <script type="text/javascript">
       1:  
       2: /**
       3:  * 判断年份是否为润年
       4:  * 
       5:  * @param {Number} year
       6:  */
       7: function isLeapYear(year) {
       8:     return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
       9: }
      10: /**
      11:  * 获取某一年份的某一月份的天数
      12:  * 
      13:  * @param {Number} year
      14:  * @param {Number} month
      15:  */
      16: function getMonthDays(year, month) {
      17:     return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
      18: }
      19:  
      20:  
      21: function clickHandler() {
      22:     var y = $('year').value,
      23:         m = $('month').value,
      24:         d = $('day').value;
      25:  
      26:     var now = new Date(y, m - 1, d),
      27:         year = now.getFullYear(),
      28:         month = now.getMonth(),
      29:         days = now.getDate();
      30:  
      31:     //那一天是那一年中的第多少天
      32:     for (var i = 0; i < month; i++) {
      33:         days += getMonthDays(year, i);
      34:     }
      35:     
      36:     //那一年第一天是星期几
      37:     var yearFirstDay = new Date(year, 0, 1).getDay() || 7;
      38:  
      39:     var week = null;
      40:     if (yearFirstDay == 1) {
      41:         week = Math.ceil(days/yearFirstDay);
      42:     } else {
      43:         days -= (7 - yearFirstDay + 1);
      44:         week = Math.ceil(days/7) + 1;
      45:  
      46:         days = Math.max(days, 1);
      47:     }
      48:  
      49:     alert(y + "年" + m + "月" + d + "日是" + year + "年的\n\n第" + days + "天\t第" + week + "周");
      50: }
    </script>
       1:  
       2:  
       3: 选择日期:
       4: <select id="year"></select><label for="year">年</label>
       5: <select id="month"></select><label for="month">月</label>
       6: <select id="day"></select><label for="day">日</label>
       7:  
       8: <button style='margin-left:30px;'>开始计算</button>
       9:  
      10: <script type="text/javascript">
      11: function $(id) {
      12:     return typeof id === 'string' ? document.getElementById(id) : id;
      13: }
      14:  
      15: function addOptions(id, start, end) {
      16:     var opt = null,
      17:         frag = document.createDocumentFragment();
      18:         
      19:     for (var i = start; i <= end ; i++) {
      20:         opt = document.createElement("option");
      21:         opt.value = i;
      22:         opt.innerHTML = i;
      23:         frag.appendChild(opt);
      24:     }
      25:     
      26:     $(id).appendChild(frag);
      27: }
      28:  
      29: function setDays(y, m) {
      30:     addOptions('day', 1, getMonthDays(y, m - 1));
      31: }
      32:  
      33: function changeDays() {
      34:     var val = $('day').value;
      35:     
      36:     $('day').options.length = 0;
      37:  
      38:     var y = $('year').value,
      39:         m = $('month').value;
      40:  
      41:     setDays(y, m);
      42:  
      43:     if (val) {
      44:         var maxDay = getMonthDays(y, m - 1);
      45:  
      46:         $('day').value = (val > maxDay) ? maxDay : val;
      47:     }
      48: }
      49:  
      50: addOptions('year', 1970, 2050);
      51: addOptions('month', 1, 12);
      52: changeDays();
      53:  
      54: //默认设置为本地时间
      55: !(function() {
      56:     var now = new Date();
      57:     $('year').value = now.getFullYear();
      58:     $('month').value = now.getMonth() + 1;
      59:     $('day').value = now.getDate();
      60: })();
      61:  
      62: $('year').onchange = changeDays;
      63: $('month').onchange = changeDays;
      64:  
      65: document.getElementsByTagName("button")[0].onclick = clickHandler;
    </script>

    </body>
    </html>

    在线运行实例:

  • 相关阅读:
    redis参数AOF参数的bug
    tidb损坏tikv节点怎么恢复集群
    mysql主从延时临时解决办法
    python脚本批量杀死redis链接
    pt-online-schema-change 脚本化
    mysql查看锁等信息SQL
    mongo复制集脑裂问题如何处理
    日志收集及网络包收集方案
    各浏览器下载文件名不乱码的解决办法
    java 中 byte[]、File、InputStream 互相转换
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2035693.html
Copyright © 2020-2023  润新知