Sha256: b9cfb8ad26689f769f8ef10b1e58a86eff09487e7b34c4aca36e1f7a717a30d0

Contents?: true

Size: 1.55 KB

Versions: 69

Compression:

Stored size: 1.55 KB

Contents

var clone = require('../lang/clone');

    /**
     * get a new Date object representing start of period
     */
    function startOf(date, period){
        date = clone(date);

        // intentionally removed "break" from switch since start of
        // month/year/etc should also reset the following periods
        switch (period) {
            case 'year':
                date.setMonth(0);
            /* falls through */
            case 'month':
                date.setDate(1);
            /* falls through */
            case 'week':
            case 'day':
                date.setHours(0);
            /* falls through */
            case 'hour':
                date.setMinutes(0);
            /* falls through */
            case 'minute':
                date.setSeconds(0);
            /* falls through */
            case 'second':
                date.setMilliseconds(0);
                break;
            default:
                throw new Error('"'+ period +'" is not a valid period');
        }

        // week is the only case that should reset the weekDay and maybe even
        // overflow to previous month
        if (period === 'week') {
            var weekDay = date.getDay();
            var baseDate = date.getDate();
            if (weekDay) {
                if (weekDay >= baseDate) {
                    //start of the week is on previous month
                    date.setDate(0);
                }
                date.setDate(date.getDate() - date.getDay());
            }
        }

        return date;
    }

    module.exports = startOf;


Version data entries

69 entries across 69 versions & 2 rubygems

Version Path
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.18 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.17 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.16 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.15 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.14 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.13 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.12 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.11 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/mout/date/startOf.js
trusty-festivity-extension-2.5.4 node_modules/bower/node_modules/mout/date/startOf.js