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

简介: 判断某一天是该年中的第多少周,需要知道该年的第一天是星期几。 比如第一年第一天是星期一,那么直接获取那一天是该年中的第多少天,取它除以7的上限; 如果不是星期一,则需要进行如下计算: 一周是7天,减去那一天星期几,则该礼拜还有 7 – n天结束,再加一天则是下一礼拜。

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

比如第一年第一天是星期一,那么直接获取那一天是该年中的第多少天,取它除以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 >

 

在线运行实例:

判定某一天在该年份中是第几周 选择日期: 年 月 日
目录
相关文章
|
5月前
根据日期获得当天是星期几?
根据日期获得当天是星期几?
41 0
|
安全 Java Unix
第七周:函数
C语言会是你敲开编程大门的第一个语言吗?
77 0
1185. 一周中的第几天 : 简单日期统计模拟题
1185. 一周中的第几天 : 简单日期统计模拟题
|
Web App开发
一周总结(十)
又过去10天了,看上周的总结不知道自己做了什么事情,只知道每天都在赶项目进度,还记得上周有个同学聚会,其余的想不起来太多。 回顾这个10天,貌似也是每天都在赶项目进度,每天都是7点半到公司,但这几天有些放松,10点半左右就不怎么工作,打算回去了。
815 0
|
Java Spring
一周总结(八)
007的月末周时间比较长,可以经历更多的事情 上一周 每个星期的周末会和女朋友出去玩一天,上周末和女朋友在学校和女朋友会合,然后在附近玩了玩。这周末看战狼2,然后在附近椅子上休息,和同学一起喝饮料,吃牛排。
766 0
|
存储 SQL 索引
第5周 堆表
原文:第5周 堆表 欢迎来到SQL Server性能调优培训的第2个月。这个月将会是最有趣和最有挑战性的一个月,这个月我们专一只谈SQL Server中的索引,索引,还是索引。相信我,值得一个月去学习索引。
997 0
|
算法 C# 索引
C# 根据年、月、周、星期获得日期等
原文:C# 根据年、月、周、星期获得日期等 [参考] http://blog.csdn.net/livening/article/details/6049341 http://zhidao.baidu.com/question/378600365.html http://www.cnblogs.com/roy117/archive/2008/03/25/1121584.html   楼上几层的代码都太多了,不用那么复杂。
1525 0
|
C++ 人工智能
2014秋C++第11周项目5参考-当年第几天
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目5-当年第几天】定义一个函数,其参数为年、月、日的值,返回这一天为该年的第几天。要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果。 int days(int y,
960 0
|
C++
2014秋C++ 第5周项目 初识C++
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目1-见识初学者常见错误】下面是最经典和最简单的C++程序。在ideone.com中运行程序,并在能正确运行的程序基础上,“捣乱”制造些错误,对此进行观察。经验是从错误中得来的,这个项目就是要
1171 0