今天项目中要获取本周、本月、本季、本年的第一天,发现网上的方法或多或少都有问题,于是自己写了一个,亲测可用。

同时回顾了一下js日期对象的知识,做个总结

先上代码:

 1 /**
 2  * 获取指定日期的周的第一天、月的第一天、季的第一天、年的第一天
 3  * @param date new Date()形式,或是自定义参数的new Date()
 4  * @returns 返回值为格式化的日期,yy-mm-dd
 5  */
 6 //日期格式化,返回值形式为yy-mm-dd
 7 function timeFormat(date) {
 8     if (!date || typeof(date) === "string") {
 9         this.error("参数异常,请检查...");
10     }
11     var y = date.getFullYear(); //年
12     var m = date.getMonth() + 1; //月
13     var d = date.getDate(); //日
14
15     return y + "-" + m + "-" + d;
16 }
17
18 //获取这周的周一
19 function getFirstDayOfWeek (date) {
20
21     var weekday = date.getDay()||7; //获取星期几,getDay()返回值是 0(周日) 到 6(周六) 之间的一个整数。0||7为7,即weekday的值为1-7
22
23     date.setDate(date.getDate()-weekday+1);//往前算(weekday-1)天,年份、月份会自动变化
24     return timeFormat(date);
25 }
26
27 //获取当月第一天
28 function getFirstDayOfMonth (date) {
29     date.setDate(1);
30     return timeFormat(date);
31 }
32
33 //获取当季第一天
34 function getFirstDayOfSeason (date) {
35     var month = date.getMonth();
36     if(month <3 ){
37         date.setMonth(0);
38     }else if(2 < month && month < 6){
39         date.setMonth(3);
40     }else if(5 < month && month < 9){
41         date.setMonth(6);
42     }else if(8 < month && month < 11){
43         date.setMonth(9);
44     }
45     date.setDate(1);
46     return timeFormat(date);
47 }
48
49 //获取当年第一天
50 function getFirstDayOfYear (date) {
51     date.setDate(1);
52     date.setMonth(0);
53     return timeFormat(date);
54 }

getYear()返回年份与1900 年之间的差,如1994年返回94,而2009年则会显示109

getFullYear()返回正确的年份,如2017

getDay() 方法可返回表示星期的某一天的数字。返回值是 0(周日) 到 6(周六) 之间的一个整数。

这里date.getDay()||7将返回值变成了1-7(对应周一到周日)。

getMonth()的返回值比实际月份少1。即0-11表示1月到 12月。我们在打印出来的时候需要getMonth()+1 才会看到正确的月份

同理setMonth(0)表示1月份

setDate() 方法用于设置一个月的某一天。

对于某个日期上加减天数来说,调用setDate()函数就可以了

date.setDate(date.getDate()-n);//前n天的日期

如果前n天的日期是上个月或是去年了,setDate()也会自动设置,会自动改变月份、年份,不需要人工判断

函数输入参数date为new Date()形式

var date=new Date();

Date 对象自动使用当前的日期和时间作为其初始值。

也可以自定义时间,参数形式有5种:

1)new Date("month dd,yyyy hh:mm:ss");

2)new Date("month dd,yyyy");

3)new Date(yyyy,mth,dd,hh,mm,ss);

4)new Date(yyyy,mth,dd);

5)new Date(ms);

具体使用如下:

1 new Date("January 12,2006 22:19:35");
2
3 new Date("January 12,2006");
4
5 new Date(2006,0,12,22,19,35);
6
7 new Date(2006,0,12);
8
9 new Date(1137075575000);

getFirstDayOfWeek、getFirstDayOfMonth等这几个函数在使用时要注意,一起使用的时候不能

1 var date = new Date(2017,0,1,22,22,22);
2
3 console.log("当前日期:",date);
4 console.log("当前日期格式化:",timeFormat(date));
5 console.log("本周第一天:",getFirstDayOfWeek(date));
6 console.log("本月第一天:",getFirstDayOfMonth(date));
7 console.log("本季第一天:",getFirstDayOfSeason(date));
8 console.log("本年第一天:",getFirstDayOfYear(date));

这样使用,因为 getFirstDayOfWeek(date) 函数直接是setDate的,这个date值已经发生了变化了,后面几个函数使用时已经不是最开始定义的date了,与我们的预期不符~(一开始就栽在这里了,明明感觉函数都对,输出值就是与预期不一样)

要一起使用时最好每个参数都new Date()一下,以2017.1.1为例:

1 console.log("当前日期:",new Date(2017,0,1));
2 console.log("当前日期格式化:",timeFormat(new Date(2017,0,1)));
3 console.log("本周第一天:",getFirstDayOfWeek(new Date(2017,0,1)));
4 console.log("本月第一天:",getFirstDayOfMonth(new Date(2017,0,1)));
5 console.log("本季第一天:",getFirstDayOfSeason(new Date(2017,0,1)));
6 console.log("本年第一天:",getFirstDayOfYear(new Date(2017,0,1)));

输出

成功了~

转载于:https://www.cnblogs.com/wasabii/p/7756560.html

js获取本周、本月、本季、本年的第一天相关推荐

  1. 获取 本周本月本季度本年开始时间和结束时间

    获取 本周本月本季度本年开始时间和结束时间 转载连接:https://blog.csdn.net/Augus3344/article/details/51015704

  2. moment 取年月日_moment.js获取本周本月本年的开始日期和结束日期

    //获取本日 const startDate = moment().format('YYYY-MM-DD'); const startDate = moment().format('YYYY-MM-D ...

  3. 获取本年、本月、本周时间范围_获取本周本月本季度本年开始结束时间.html

    (function(window){ function __Date() { /* 返回时间格式统一为 2020-12-12 getDate:返回当前日期 getThisWeek:返回本周开始日期-结 ...

  4. java 本年第一个月_JAVA获取本周 本月 本年 第一天和最后一天

    JAVA获取本周 本月 本年 第一天和最后一天 /** * 日期工具类 */ public class DateUtils { /** * 获取今天 * @return String * */ pub ...

  5. js获取本周的周一、周日和上周的周一、周日

    1.js获取本周的周一.周日和上周的周一.周日 var now =new Date(); var nowTime =now.getTime(); var day =now.getDay(); var ...

  6. java,js获取本周和下周开始结束日期

    额,本人第一次下博文,先写一篇看看咋写. 文章目录 前言 一.java下获取本周开始结束日期以及根据某个日期获取本周开始结束日期 二.js获取本周或下周日期 总结 前言 前几天开发时用到了一些获取本周 ...

  7. JS获取本周、本季度、本月、上月的开端日期、停止日期

    Js代码 /** * 获取本周.本季度.本月.上月的开端日期.停止日期 */ var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); ...

  8. java 本年第一天_JAVA获取本周 本月 本年 第一天和最后一天

    /** * 日期工具类 */ public class DateUtils { /** * 获取今天 * @return String * */ public static String getTod ...

  9. android获取后一天日期,android获取本周本月本年的第一天和最后一天

    /*** * 获取本周的第一天和最后一天: */ public static String getFirstDayAndLastDayOfDay() { StringBuffer stringBuff ...

最新文章

  1. asin java_Java asin() 方法
  2. POJ 2749 Building roads 2-sat+二分答案
  3. 模型学习 - RNN及一系列发展
  4. 【软件设计师】2020-08-07
  5. 嵌入式开发中模拟SPI的驱动
  6. c# 科学计数法值转换成正常值,返回字符串
  7. 查看Linux内核版本、系统版本命令
  8. array数组的若干操作
  9. 常用功能测试点汇总(转)
  10. ulimit设置不生效?
  11. 使用SQL语句的子查询批量复制表数据
  12. 【防爬虫01】通过headers中的user-agent字段来反爬
  13. 手机计算机不支持此操作系统,Win10计算机投影屏幕此设备不支持Miracast
  14. 如何计算机房负载,机房UPS电源实际负载容量与负载量是怎么计算的?
  15. 韩昊 20190919-6 四则运算试题生成,结对
  16. 如何通过SEO思维收割各大平台的流量?
  17. 三顾茅庐:刘备如何面试诸葛亮
  18. vs中开发web项目IIS Express支持局域网连接
  19. 开源项目——小Q聊天机器人V1.3
  20. 前端复习HTML+CSS+JavaScript(必问面试题)

热门文章

  1. TCP/IP协议 网络层
  2. 【转】 LINUX中IPTABLES和TC对端口的带宽限制 端口限速
  3. AsyncTask工作机制简介
  4. LeetCode之283. Move Zeroes
  5. 杭电1000 A + B Problem
  6. 看图说OpenGL之三:是什么在改变物体的颜色
  7. Android onMeasure过程分析
  8. android 布局preview 技巧
  9. getElementByName????????,????????,
  10. appcompat_v7\res\values-v21\themes_base.xml:158: error: Error: No resource