parseRangeFromString()

in public/lib/date-service.js [162:210]


        parseRangeFromString(input, locationKey) {

            var now = this.localiseDateTime(this.now(), locationKey).clone();

            if (!input) {
                return {};
            }
            // Parses some natural language dates - doesn't use sugar as I'd like
            // to remove it as a dependency one day as it modifies the global Date object
            if (input == 'today') {
                const migrationDate = moment.tz("2017-04-25 11:00", "Europe/London");
                const fixedDate = moment.tz("2017-04-26 11:00", "Europe/London");
                if (now > fixedDate) {
                    return this.createDayRange(now);
                } else {
                    var dayStart = migrationDate;

                    return this.createRange(dayStart, dayStart.clone().add(1, 'days'));
                }
            } else if (input == 'tomorrow') {
                return this.createDayRange(now.add(1, 'days'));

            } else if (input == 'weekend') {
                var weekendStart = now.day(6).startOf('day');

                return this.createRange(weekendStart, weekendStart.clone().add(2, 'days'));

            } else if (input == 'yesterday') {

                return this.createDayRange(now.subtract(1, 'days'));

            } else if (input === 'last24') {

                return this.createRange(now.clone().subtract(24, 'hours'), now);

            } else if (input === 'last48') {

                return this.createRange(now.clone().subtract(48, 'hours'), now);

            } else {
                var parsed = this.localiseDateTime(input, locationKey);

                if (!parsed.isValid()) {
                    throw new Error('Could not parse date: ' + input);
                }

                return this.createDayRange(parsed);
            }
        }