javascript获取某月最后一天(公历)
2010-03-20 17:52
387 查看
【算法思想】
获取下个月第一天(new Date(year, month + 1, 1))再倒退一天即可。
【优点】
1. 不需要再计算某月含有多少天,虽然可以很简单解决吗,用数组[31,28/29,31,30,31,30,31,31,30,31,30,31];
2. 不需要计算2月是否是闰月。
【代码】
【测试代码】
【测试结果】
2010/0 : 2010年1月31日 星期日 0:00:00
2010/1 : 2010年2月28日 星期日 0:00:00
2010/2 : 2010年3月31日 星期三 0:00:00
2010/3 : 2010年4月30日 星期五 0:00:00
2010/4 : 2010年5月31日 星期一 0:00:00
2010/5 : 2010年6月30日 星期三 0:00:00
2010/6 : 2010年7月31日 星期六 0:00:00
2010/7 : 2010年8月31日 星期二 0:00:00
2010/8 : 2010年9月30日 星期四 0:00:00
2010/9 : 2010年10月31日 星期日 0:00:00
2010/10 : 2010年11月30日 星期二 0:00:00
2010/11 : 2010年12月31日 星期五 0:00:00
2010/12 : 2011年1月31日 星期一 0:00:00
2010/13 : 2011年2月28日 星期一 0:00:00
2009/0 : 2009年1月31日 星期六 0:00:00
2010/0 : 2010年1月31日 星期日 0:00:00
2011/0 : 2011年1月31日 星期一 0:00:00
2012/0 : 2012年1月31日 星期二 0:00:00
2013/0 : 2013年1月31日 星期四 0:00:00
2014/0 : 2014年1月31日 星期五 0:00:00
2009/1 : 2009年2月28日 星期六 0:00:00
2010/1 : 2010年2月28日 星期日 0:00:00
2011/1 : 2011年2月28日 星期一 0:00:00
2012/1 : 2012年2月29日 星期三 0:00:00
2013/1 : 2013年2月28日 星期四 0:00:00
2014/1 : 2014年2月28日 星期五 0:00:00
2009/11 : 2009年12月31日 星期四 0:00:00
2010/11 : 2010年12月31日 星期五 0:00:00
2011/11 : 2011年12月31日 星期六 0:00:00
2012/11 : 2012年12月31日 星期一 0:00:00
2013/11 : 2013年12月31日 星期二 0:00:00
2014/11 : 2014年12月31日 星期三 0:00:00
2010/-1 : 2009年12月31日 星期四 0:00:00
2010/-2 : 2009年11月30日 星期一 0:00:00
2010/-3 : 2009年10月31日 星期六 0:00:00
2010/-4 : 2009年9月30日 星期三 0:00:00
2010/-5 : 2009年8月31日 星期一 0:00:00
2010/-6 : 2009年7月31日 星期五 0:00:00
2010/-7 : 2009年6月30日 星期二 0:00:00
2010/-8 : 2009年5月31日 星期日 0:00:00
2010/12 : 2011年1月31日 星期一 0:00:00
2010/13 : 2011年2月28日 星期一 0:00:00
2010/14 : 2011年3月31日 星期四 0:00:00
2010/15 : 2011年4月30日 星期六 0:00:00
2010/16 : 2011年5月31日 星期二 0:00:00
2010/17 : 2011年6月30日 星期四 0:00:00
2010/18 : 2011年7月31日 星期日 0:00:00
2010/19 : 2011年8月31日 星期三 0:00:00
0/0 : 1900年1月31日 星期三 0:00:00
0/-1 : 1899年12月31日 星期日 0:00:00
0/-2 : 1899年11月30日 星期四 0:00:00
0/-3 : 1899年10月31日 星期二 0:00:00
0/0 : 1900年1月31日 星期三 0:00:00
-1/0 : Sun Jan 31 00:00:00 UTC+0800 2 B.C.
-2/0 : Sat Jan 31 00:00:00 UTC+0800 3 B.C.
-3/0 : Fri Jan 31 00:00:00 UTC+0800 4 B.C.
-4/0 : Wed Jan 31 00:00:00 UTC+0800 5 B.C.
-5/0 : Tue Jan 31 00:00:00 UTC+0800 6 B.C.
10000/0 : Mon Jan 31 00:00:00 UTC+0800 10000
100001/0 : Wed Jan 31 00:00:00 UTC+0800 100001
100002/0 : Thu Jan 31 00:00:00 UTC+0800 100002
100003/0 : Fri Jan 31 00:00:00 UTC+0800 100003
获取下个月第一天(new Date(year, month + 1, 1))再倒退一天即可。
【优点】
1. 不需要再计算某月含有多少天,虽然可以很简单解决吗,用数组[31,28/29,31,30,31,30,31,31,30,31,30,31];
2. 不需要计算2月是否是闰月。
【代码】
/** * @author Xing,XiuDong * @date 2010.03.20 * @param year: 建议从0开始,0表示1900年 * @param month: 从0开始,0表示1月 */ function getLastDateOfMonth(year, month) { return new Date(new Date(year, month + 1, 1).getTime() - 1000 * 60 * 60 * 24); }
【测试代码】
<mce:script type="text/javascript"><!--
/** * @author Xing,XiuDong * @date 2010.03.20 * @param year: 建议从0开始,0表示1900年 * @param month: 从0开始,0表示1月 */ function getLastDateOfMonth(year, month) { return new Date(new Date(year, month + 1, 1).getTime() - 1000 * 60 * 60 * 24); }
// test case starting...
function testGetLastDateOfMonth(year, month) {
document.writeln(year + "/" + month + " : " + getLastDateOfMonth(year, month).toLocaleString() + "<br />");
}
document.writeln("<h1>JavaScript 获取某月最后一天(Date)测试结果</h1>");
document.writeln("<h3>一般测试 :</h3>");
testGetLastDateOfMonth(2010, -1);
testGetLastDateOfMonth(2010, 0);
testGetLastDateOfMonth(2010, 1);
testGetLastDateOfMonth(2010, 2);
testGetLastDateOfMonth(2010, 3);
testGetLastDateOfMonth(2010, 4);
testGetLastDateOfMonth(2010, 5);
testGetLastDateOfMonth(2010, 6);
testGetLastDateOfMonth(2010, 7);
testGetLastDateOfMonth(2010, 8);
testGetLastDateOfMonth(2010, 9);
testGetLastDateOfMonth(2010, 10);
testGetLastDateOfMonth(2010, 11);
testGetLastDateOfMonth(2010, 12);
testGetLastDateOfMonth(2010, 13);
document.writeln("<h3>1月份测试 :</h3>");
testGetLastDateOfMonth(2008, 0);
testGetLastDateOfMonth(2009, 0);
testGetLastDateOfMonth(2010, 0);
testGetLastDateOfMonth(2011, 0);
testGetLastDateOfMonth(2012, 0);
testGetLastDateOfMonth(2013, 0);
testGetLastDateOfMonth(2014, 0);
document.writeln("<h3>2月份测试 :</h3>");
testGetLastDateOfMonth(2008, 1);
testGetLastDateOfMonth(2009, 1);
testGetLastDateOfMonth(2010, 1);
testGetLastDateOfMonth(2011, 1);
testGetLastDateOfMonth(2012, 1);
testGetLastDateOfMonth(2013, 1);
testGetLastDateOfMonth(2014, 1);
document.writeln("<h3>12月份测试 :</h3>");
testGetLastDateOfMonth(2008, 11);
testGetLastDateOfMonth(2009, 11);
testGetLastDateOfMonth(2010, 11);
testGetLastDateOfMonth(2011, 11);
testGetLastDateOfMonth(2012, 11);
testGetLastDateOfMonth(2013, 11);
testGetLastDateOfMonth(2014, 11);
document.writeln("<h3>BT月份测试(month <= 0) :</h3>");
testGetLastDateOfMonth(2010, 0);
testGetLastDateOfMonth(2010, -1);
testGetLastDateOfMonth(2010, -2);
testGetLastDateOfMonth(2010, -3);
testGetLastDateOfMonth(2010, -4);
testGetLastDateOfMonth(2010, -5);
testGetLastDateOfMonth(2010, -6);
testGetLastDateOfMonth(2010, -7);
testGetLastDateOfMonth(2010, -8);
document.writeln("<h3>BT月份测试(month >= 11) :</h3>");
testGetLastDateOfMonth(2010, 11);
testGetLastDateOfMonth(2010, 12);
testGetLastDateOfMonth(2010, 13);
testGetLastDateOfMonth(2010, 14);
testGetLastDateOfMonth(2010, 15);
testGetLastDateOfMonth(2010, 16);
testGetLastDateOfMonth(2010, 17);
testGetLastDateOfMonth(2010, 18);
testGetLastDateOfMonth(2010, 19);
document.writeln("<h3>BT年份测试(year = 0) :</h3>");
testGetLastDateOfMonth(0, 1);
testGetLastDateOfMonth(0, 0);
testGetLastDateOfMonth(0, -1);
testGetLastDateOfMonth(0, -2);
testGetLastDateOfMonth(0, -3);
document.writeln("<h3>BT年份测试(year <= 1) :</h3>");
testGetLastDateOfMonth(1, 0);
testGetLastDateOfMonth(0, 0);
testGetLastDateOfMonth(-1, 0);
testGetLastDateOfMonth(-2, 0);
testGetLastDateOfMonth(-3, 0);
testGetLastDateOfMonth(-4, 0);
testGetLastDateOfMonth(-5, 0);
document.writeln("<h3>BT年份测试(year > 9999) :</h3>");
testGetLastDateOfMonth(9999, 0);
testGetLastDateOfMonth(10000, 0);
testGetLastDateOfMonth(100001, 0);
testGetLastDateOfMonth(100002, 0);
testGetLastDateOfMonth(100003, 0);
// --></mce:script>
【测试结果】
JavaScript 获取某月最后一天(Date)测试结果
一般测试 :
2010/-1 : 2009年12月31日 星期四 0:00:002010/0 : 2010年1月31日 星期日 0:00:00
2010/1 : 2010年2月28日 星期日 0:00:00
2010/2 : 2010年3月31日 星期三 0:00:00
2010/3 : 2010年4月30日 星期五 0:00:00
2010/4 : 2010年5月31日 星期一 0:00:00
2010/5 : 2010年6月30日 星期三 0:00:00
2010/6 : 2010年7月31日 星期六 0:00:00
2010/7 : 2010年8月31日 星期二 0:00:00
2010/8 : 2010年9月30日 星期四 0:00:00
2010/9 : 2010年10月31日 星期日 0:00:00
2010/10 : 2010年11月30日 星期二 0:00:00
2010/11 : 2010年12月31日 星期五 0:00:00
2010/12 : 2011年1月31日 星期一 0:00:00
2010/13 : 2011年2月28日 星期一 0:00:00
1月份测试 :
2008/0 : 2008年1月31日 星期四 0:00:002009/0 : 2009年1月31日 星期六 0:00:00
2010/0 : 2010年1月31日 星期日 0:00:00
2011/0 : 2011年1月31日 星期一 0:00:00
2012/0 : 2012年1月31日 星期二 0:00:00
2013/0 : 2013年1月31日 星期四 0:00:00
2014/0 : 2014年1月31日 星期五 0:00:00
2月份测试 :
2008/1 : 2008年2月29日 星期五 0:00:002009/1 : 2009年2月28日 星期六 0:00:00
2010/1 : 2010年2月28日 星期日 0:00:00
2011/1 : 2011年2月28日 星期一 0:00:00
2012/1 : 2012年2月29日 星期三 0:00:00
2013/1 : 2013年2月28日 星期四 0:00:00
2014/1 : 2014年2月28日 星期五 0:00:00
12月份测试 :
2008/11 : 2008年12月31日 星期三 0:00:002009/11 : 2009年12月31日 星期四 0:00:00
2010/11 : 2010年12月31日 星期五 0:00:00
2011/11 : 2011年12月31日 星期六 0:00:00
2012/11 : 2012年12月31日 星期一 0:00:00
2013/11 : 2013年12月31日 星期二 0:00:00
2014/11 : 2014年12月31日 星期三 0:00:00
BT月份测试(month <= 0) :
2010/0 : 2010年1月31日 星期日 0:00:002010/-1 : 2009年12月31日 星期四 0:00:00
2010/-2 : 2009年11月30日 星期一 0:00:00
2010/-3 : 2009年10月31日 星期六 0:00:00
2010/-4 : 2009年9月30日 星期三 0:00:00
2010/-5 : 2009年8月31日 星期一 0:00:00
2010/-6 : 2009年7月31日 星期五 0:00:00
2010/-7 : 2009年6月30日 星期二 0:00:00
2010/-8 : 2009年5月31日 星期日 0:00:00
BT月份测试(month >= 11) :
2010/11 : 2010年12月31日 星期五 0:00:002010/12 : 2011年1月31日 星期一 0:00:00
2010/13 : 2011年2月28日 星期一 0:00:00
2010/14 : 2011年3月31日 星期四 0:00:00
2010/15 : 2011年4月30日 星期六 0:00:00
2010/16 : 2011年5月31日 星期二 0:00:00
2010/17 : 2011年6月30日 星期四 0:00:00
2010/18 : 2011年7月31日 星期日 0:00:00
2010/19 : 2011年8月31日 星期三 0:00:00
BT年份测试(year = 0) :
0/1 : 1900年2月28日 星期三 0:00:000/0 : 1900年1月31日 星期三 0:00:00
0/-1 : 1899年12月31日 星期日 0:00:00
0/-2 : 1899年11月30日 星期四 0:00:00
0/-3 : 1899年10月31日 星期二 0:00:00
BT年份测试(year <= 1) :
1/0 : 1901年1月31日 星期四 0:00:000/0 : 1900年1月31日 星期三 0:00:00
-1/0 : Sun Jan 31 00:00:00 UTC+0800 2 B.C.
-2/0 : Sat Jan 31 00:00:00 UTC+0800 3 B.C.
-3/0 : Fri Jan 31 00:00:00 UTC+0800 4 B.C.
-4/0 : Wed Jan 31 00:00:00 UTC+0800 5 B.C.
-5/0 : Tue Jan 31 00:00:00 UTC+0800 6 B.C.
BT年份测试(year > 9999) :
9999/0 : 9999年1月31日 星期日 0:00:0010000/0 : Mon Jan 31 00:00:00 UTC+0800 10000
100001/0 : Wed Jan 31 00:00:00 UTC+0800 100001
100002/0 : Thu Jan 31 00:00:00 UTC+0800 100002
100003/0 : Fri Jan 31 00:00:00 UTC+0800 100003
相关文章推荐
- javascript获取某月最后一天(公历)
- javascript获取某年某月的最后一天
- 【javaScript】获取某年某月的的最后一天(即当月天数) 妙用
- JavaScript获取某年某月的最后一天附截图
- JavaScript获取某年某月的最后一天
- JavaScript获取某年某月的最后一天附截图
- JavaScript获取某年某月的最后一天
- JavaScript获取某年某月的最后一天
- ABAP获取某月最后一天
- java8使用date获取某月第一天的00:00:00&amp;amp;某月最后一天的23:59:59
- js 获取某年某月的最后一天
- Java实现获取某年某月第一天/最后一天的方法
- java获取某月,某季度的第一天和最后一天
- 获取某年某月的第一天和最后一天的Sql Server函数
- Javascript和python获取月份第一天和最后一天
- c#获取某月的第一天和某月的最后一天
- JavaScript-----获取本周第一天、最后一天的日期
- 获取某月第一天,最后一天的sql server脚本 【转】http://blog.csdn.net/chaoowang/article/details/9167969
- Shell获取某月最后一天
- 获取某月第一天,最后一天的sql server脚本