js获取两个日期间的所有日期

https://www.jianshu.com/p/79257a40798d

1、开始日期小于结束日期

跨年月的:如2016-12-30至2017-06-12

不跨年跨月的:2017-01-02至2017-06-12

不跨年不跨月的:2017-06-01至2017-06-12

2、两个日期相等,天数为0,之间没有日期

3、开始日期小于结束日期,天数为0,之间没有日期


  /**

  **datestr:形如‘2017-06-12’的字符串

  **return Date 对象

  **/

  function getDate (datestr) {

        var temp = datestr.split("-");

        if (temp[1] === '01') {

            temp[0] = parseInt(temp[0],10) - 1;

            temp[1] = '12';

        } else {

            temp[1] = parseInt(temp[1],10) - 1;

        }

        //new Date()的月份入参实际都是当前值-1

        var date = new Date(temp[0], temp[1], temp[2]);

        return date;

    }

  /**

  ***获取两个日期间的所有日期

  ***默认start<end

  **/

  function getDiffDate (start, end) {

        var startTime = getDate(start);

        var endTime = getDate(end);

        var dateArr = [];

        while ((endTime.getTime() - startTime.getTime()) > 0) {

            var year = startTime.getFullYear();

            var month = startTime.getMonth().toString().length === 1 ? "0" + (parseInt(startTime.getMonth().toString(),10) + 1) : (startTime.getMonth() + 1);

            var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate();

            dateArr.push(year + "-" + month + "-" + day);

            startTime.setDate(startTime.getDate() + 1);

        }

        return dateArr;

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,844评论 6 13
  • 写在前面的话 最近需要写个小功能,就把这个功能拆成小方法了,觉得日期这玩意儿基本上都能用到,就记录下来,方便自己以...
    嘻哈章鱼小丸子阅读 11,420评论 4 4
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,705评论 0 17
  • 今天他生日,我做了长寿面,他吃光了,反到我还是没有胃口吃。昨晚我们去东区吃饭,那会胃口是好的。这会呢,心情又有些沮...
    木人雨2000阅读 1,358评论 0 0
  • “我”从“神马国”、经葡萄牙首都里斯本回英国故土的过程:“我”最先划船到一个小港湾;然后到一个小岛,被当地野人追赶...
    纪思羽阅读 2,490评论 0 0