专栏首页AhDungjs日期计算及快速获取周、月、季度起止日

js日期计算及快速获取周、月、季度起止日

机缘巧合,这段接触了一下js,刚开始各种磕碰各种不顺手,一个日期计算都折腾我半天,积累了一些,赶紧码下:  

 1 var now = new Date();                                                //当前日期
 2 var nowDayOfWeek = (now.getDay() == 0) ? 7 : now.getDay() - 1;       //今天是本周的第几天。周一=0,周日=6
 3 var nowDay = now.getDate();                                          //当前日
 4 var nowMonth = now.getMonth();                                       //当前月值(1月=0,12月=11)
 5 var nowMonReal = now.getMonth() + 1;                                 //当前月实际数字
 6 var nowYear = now.getFullYear();                                     //当前年
 7 
 8 //日期+天
 9 function AddDays(d, n) {
10     var t = new Date(d);//复制并操作新对象,避免改动原对象
11     t.setDate(t.getDate() + n);
12     return t;
13 }
14 
15 //日期+月。日对日,若目标月份不存在该日期,则置为最后一日
16 function AddMonths(d, n) {
17     var t = new Date(d);
18     t.setMonth(t.getMonth() + n);
19     if (t.getDate() != d.getDate()) { t.setDate(0); }
20     return t;
21 }
22 
23 //日期+年。月对月日对日,若目标年月不存在该日期,则置为最后一日
24 function AddYears(d, n) {
25     var t = new Date(d);
26     t.setFullYear(t.getFullYear() + n);
27     if (t.getDate() != d.getDate()) { t.setDate(0); }
28     return t;
29 }
30 
31 //获得本季度的开始月份
32 function getQuarterStartMonth() {
33     if (nowMonth <= 2) { return 0; }
34     else if (nowMonth <= 5) { return 3; }
35     else if (nowMonth <= 8) { return 6; }
36     else { return 9; }
37 }
38 
39 //周一
40 function getWeekStartDate() {
41     return AddDays(now, -nowDayOfWeek);
42 }
43 
44 //周日。本周一+6天
45 function getWeekEndDate() {
46     return AddDays(getWeekStartDate(), 6);
47 }
48 
49 //月初
50 function getMonthStartDate() {
51     return new Date(nowYear, nowMonth, 1);
52 }
53 
54 //月末。下月初-1天
55 function getMonthEndDate() {
56     return AddDays(AddMonths(getMonthStartDate(), 1), -1);
57 }
58 
59 //季度初
60 function getQuarterStartDate() {
61     return new Date(nowYear, getQuarterStartMonth(), 1);
62 }
63 
64 //季度末。下季初-1天
65 function getQuarterEndDate() {
66     return AddDays(AddMonths(getQuarterStartDate(), 3), -1);
67 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SQL】分配函数一枚[AllotToTable]

    像这种分配法我估计在多种场景都有在用,它应该有个名堂的,只是我不知道,还请知道的猿友告知,谢谢。

    AhDung
  • 【T-SQL】获取指定日期的常用前后节点(月初月末周一周末等等)

    AhDung
  • 注意条件运算符(?:)的右联规则

    详情参见:http://msdn.microsoft.com/zh-cn/library/ty67wk28(v=vs.90).aspx

    AhDung
  • ​助力你的工作效率, 封装一些常用的工具函数(一)

    为了提高以后自己的工作效率,今天抽取了一些公共函数,希望大家可以一起总结!后续我会陆陆续续更新工具函数

    前端老鸟
  • [基础]电话/手机常见验证的Javascript示例

    电话号码:<input type="text" id="TelPrefix" size="4" MaxLength="4"> - <input type="te...

    菩提树下的杨过
  • 前端:JavaScript闭包

    渔父歌
  • JavaScript高级技巧

    以上代码要返回true,value必须是一个数组,而且还必须与Array构造函数在同个全局作用域中。(Array是window的属性)如果value是在另外一个...

    奋飛
  • babel到底将代码转换成什么鸟样?

    前言 将babel捧作前端一个划时代的工具一定也不为过,它的出现让许多程序员幸福地用上了es6新语法。但你就这么放心地让babel跑在外网?反正我是不放心,我就...

    李成熙heyli
  • JavaScript设计模式--单例模式

    保证一个类仅有一个实例,并提供一个访问它的全局访问点。 当单击登陆按钮,页面中出现一个登陆浮窗,这个登陆浮窗是唯一的,无论单击多少次登陆按钮,这个浮窗都只会...

    奋飛
  • JavaScript设计模式 策略模式

    在现实中,我们到达一个地方,通常可以选择不同的方式,例如自行车,火车,汽车,飞机等。

    菜的黑人牙膏

扫码关注云+社区

领取腾讯云代金券