JS获取月份最后天数、最大天数与某日周数的方法


Posted in Javascript onDecember 08, 2015

本文实例讲述了JS获取月份最后天数、最大天数与某日周数的方法。分享给大家供大家参考,具体如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>标题页</title>
<script language="javascript">
function getLastDay(year,month)
{
 var new_year = year;  //取当前的年份
 var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
 if(month>12)      //如果当前大于12月,则年份转到下一年
 {
 new_month -=12;    //月份减
 new_year++;      //年份增
 }
 var newnew_date = new Date(new_year,new_month,1);//取当年当月中的第一天
 return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
}
</script>
<body>
  <input id="Button1" type="button" value="取2007年5月的最后一天" onClick="alert(getLastDay(2007,5))" />
</body>
</html>

js得到一个月最大天数
 
JS里 面的new Date("xxxx/xx/xx")这个日期的构造方法有一个妙处,
当你传入的是"xxxx/xx/0"(0号)的话,得到的日期是"xx"月的前一个 月的最后一天("xx"月的最大取值是69,题外话),
当你传入的是"xxxx/xx/1"(1号)的话,得到的日期是"xx"月的后一个 月的第一天(自己理解)
如果传入"1999/13/0",会得到"1998/12/31"。而且最大的好处是当你传入"xxxx/3/0",会得到xxxx年2月的最后一天,它会自动判断当年是否是闰年来返回28或29,不用自己判断,
所以,我们想得到选择年选择月有多少天的话,只需要

var temp=new Date("选择年/选择月+1/0");
return temp.getDate()//最大天数

校验的话,也可以用这个方法。

下面是使用JS编写的获取某年某月有多少天的getDaysInMonth(year, month)方法:

function getDaysInMonth(year,month){
   month = parseInt(month,10)+1;
   var temp = new Date(year+"/"+month+"/0");
   return temp.getDate();
}

js 获取某年的某天是第几周

/**
 * 判断年份是否为润年
 *
 * @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);
}
 /**
 * 获取某年的某天是第几周
 * @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;
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
Javascript学习笔记一 之 数据类型
Dec 15 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
Apr 26 Javascript
jquery实现叠层3D文字特效代码分享
Aug 21 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
初探js和简单隐藏效果的实例
Nov 23 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
vue this.reload 方法 配置
Sep 12 Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 Javascript
Javascript call及apply应用场景及实例
Aug 26 Javascript
express异步函数异常捕获示例详解
Nov 30 Javascript
AngularJS Module方法详解
Dec 08 #Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
Dec 08 #Javascript
JS与jQ读取xml文件的方法
Dec 08 #Javascript
js实现select下拉框菜单
Dec 08 #Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 #Javascript
JavaScript的代码编写格式规范指南
Dec 07 #Javascript
JSON遍历方式实例总结
Dec 07 #Javascript
You might like
Windows下的PHP5.0详解
2006/11/18 PHP
ZF等常用php框架中存在的问题
2008/01/10 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
laravel 数据验证规则详解
2019/10/23 PHP
扩展String功能方法
2006/09/22 Javascript
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
浅谈JS之iframe中的窗口
2016/09/13 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Tensorflow简单验证码识别应用
2017/05/25 Python
python用户管理系统的实例讲解
2017/12/23 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
keras得到每层的系数方式
2020/06/15 Python
python飞机大战游戏实例讲解
2020/12/04 Python
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
Javascript之datagrid查询详解
2021/09/15 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
2022/04/19 Javascript
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL