js日期比较

var assert = require('assert');
describe('mocha', function() {
    describe('#indexOf()', function() {
        it('mocha test', function() {

            var EQUAL = '0',
                RIGHT = '1',
                SUCCESS = 'OK',
                ERROR = 'ERROR';

            // 日期相等
            var result1 = comparisonDate('2017-11-11', '2017-11-11');
            assert.equal(result1.state, SUCCESS);
            assert.equal(result1.content, EQUAL);

            // 开始日期小于结束日期
            var result2 = comparisonDate('2017-11-11', '2017-11-12');
            assert.equal(result1.state, SUCCESS);
            assert.equal(result1.content, RIGHT);

            // 开始日期大于结束日期
            var result3 = comparisonDate('2017-11-12', '2017-11-11');
            assert.equal(result1.state, ERROR);

            // 开始日期出错
            var result4 = comparisonDate('2017-11-1', '2017-11-11');
            assert.equal(result1.state, ERROR);

            // 结束日期出错
            var result5 = comparisonDate('2017-11-1', '3017-11-11');
            assert.equal(result1.state, ERROR);

        });
    });
});

function comparisonDate( begin_date, end_date  ) {
    const EQUAL = 0,
        RIGHT = 1,
        SUCCESS = 'OK',
        ERROR = 'ERROR',
        dateReg = /^[2]d{3}-[01]d-[0123]d$/;

    const data = {
        state: ERROR,
        msg: '',
        content: '日期出错'
    }

    if ( typeof begin_date !== 'string' || begin_date === '' || !dateReg.test( begin_date ) ) {
        data.msg = '参数begin_date出错';
        return data;
    }

    if ( typeof end_date !== 'string' || end_date  === '' || !dateReg.test( end_date ) ) {
        data.msg = '参数end_date出错';
        return data;
    }

    try {
        const beginTimestamp = new Date(begin_date).getTime();
        const endTimestamp = new Date(end_date).getTime();

        // 开始日期小于结束日期
        if ( beginTimestamp > endTimestamp ) {
            data.msg = '开始时间大于结束时间';
            return data;
        }

        // 开始日期等于结束日期
        if ( beginTimestamp ===  endTimestamp ) {
            data.state = SUCCESS;
            data.content = EQUAL.toString();
            return data;
        }

        data.state = SUCCESS;
        data.content = RIGHT.toString();
        return data;

    } catch ( err ) {
        return data;
    }
}

  

原文地址:https://www.cnblogs.com/maduar/p/7999921.html