You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					92 lines
				
				3.3 KiB
			
		
		
			
		
	
	
					92 lines
				
				3.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * True during (or between) the specified time(s).
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Even though the examples don't show it, this parameter may be present in
							 | 
						||
| 
								 | 
							
								 * each of the different parameter profiles, always as the last parameter.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Examples:
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ``` js
							 | 
						||
| 
								 | 
							
								 * timerange(12)
							 | 
						||
| 
								 | 
							
								 * true from noon to 1pm.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timerange(12, 13)
							 | 
						||
| 
								 | 
							
								 * same as above.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timerange(12, "GMT")
							 | 
						||
| 
								 | 
							
								 * true from noon to 1pm, in GMT timezone.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timerange(9, 17)
							 | 
						||
| 
								 | 
							
								 * true from 9am to 5pm.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timerange(8, 30, 17, 00)
							 | 
						||
| 
								 | 
							
								 * true from 8:30am to 5:00pm.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timerange(0, 0, 0, 0, 0, 30)
							 | 
						||
| 
								 | 
							
								 * true between midnight and 30 seconds past midnight.
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * timeRange(hour)
							 | 
						||
| 
								 | 
							
								 * timeRange(hour1, hour2)
							 | 
						||
| 
								 | 
							
								 * timeRange(hour1, min1, hour2, min2)
							 | 
						||
| 
								 | 
							
								 * timeRange(hour1, min1, sec1, hour2, min2, sec2)
							 | 
						||
| 
								 | 
							
								 * timeRange(hour1, min1, sec1, hour2, min2, sec2, gmt)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {String} hour is the hour from 0 to 23. (0 is midnight, 23 is 11 pm.)
							 | 
						||
| 
								 | 
							
								 * @param {String} min minutes from 0 to 59.
							 | 
						||
| 
								 | 
							
								 * @param {String} sec seconds from 0 to 59.
							 | 
						||
| 
								 | 
							
								 * @param {String} gmt either the string "GMT" for GMT timezone, or not specified, for local timezone.
							 | 
						||
| 
								 | 
							
								 * @return {Boolean}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								function timeRange() {
							 | 
						||
| 
								 | 
							
								    // eslint-disable-next-line prefer-rest-params
							 | 
						||
| 
								 | 
							
								    const args = Array.prototype.slice.call(arguments);
							 | 
						||
| 
								 | 
							
								    const lastArg = args.pop();
							 | 
						||
| 
								 | 
							
								    const useGMTzone = lastArg === 'GMT';
							 | 
						||
| 
								 | 
							
								    const currentDate = new Date();
							 | 
						||
| 
								 | 
							
								    if (!useGMTzone) {
							 | 
						||
| 
								 | 
							
								        args.push(lastArg);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    const noOfArgs = args.length;
							 | 
						||
| 
								 | 
							
								    let result = false;
							 | 
						||
| 
								 | 
							
								    let numericArgs = args.map((n) => parseInt(n, 10));
							 | 
						||
| 
								 | 
							
								    // timeRange(hour)
							 | 
						||
| 
								 | 
							
								    if (noOfArgs === 1) {
							 | 
						||
| 
								 | 
							
								        result = getCurrentHour(useGMTzone, currentDate) === numericArgs[0];
							 | 
						||
| 
								 | 
							
								        // timeRange(hour1, hour2)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else if (noOfArgs === 2) {
							 | 
						||
| 
								 | 
							
								        const currentHour = getCurrentHour(useGMTzone, currentDate);
							 | 
						||
| 
								 | 
							
								        result = numericArgs[0] <= currentHour && currentHour < numericArgs[1];
							 | 
						||
| 
								 | 
							
								        // timeRange(hour1, min1, hour2, min2)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else if (noOfArgs === 4) {
							 | 
						||
| 
								 | 
							
								        result = valueInRange(secondsElapsedToday(numericArgs[0], numericArgs[1], 0), secondsElapsedToday(getCurrentHour(useGMTzone, currentDate), getCurrentMinute(useGMTzone, currentDate), 0), secondsElapsedToday(numericArgs[2], numericArgs[3], 59));
							 | 
						||
| 
								 | 
							
								        // timeRange(hour1, min1, sec1, hour2, min2, sec2)
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else if (noOfArgs === 6) {
							 | 
						||
| 
								 | 
							
								        result = valueInRange(secondsElapsedToday(numericArgs[0], numericArgs[1], numericArgs[2]), secondsElapsedToday(getCurrentHour(useGMTzone, currentDate), getCurrentMinute(useGMTzone, currentDate), getCurrentSecond(useGMTzone, currentDate)), secondsElapsedToday(numericArgs[3], numericArgs[4], numericArgs[5]));
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.default = timeRange;
							 | 
						||
| 
								 | 
							
								function secondsElapsedToday(hh, mm, ss) {
							 | 
						||
| 
								 | 
							
								    return hh * 3600 + mm * 60 + ss;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function getCurrentHour(gmt, currentDate) {
							 | 
						||
| 
								 | 
							
								    return gmt ? currentDate.getUTCHours() : currentDate.getHours();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function getCurrentMinute(gmt, currentDate) {
							 | 
						||
| 
								 | 
							
								    return gmt ? currentDate.getUTCMinutes() : currentDate.getMinutes();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function getCurrentSecond(gmt, currentDate) {
							 | 
						||
| 
								 | 
							
								    return gmt ? currentDate.getUTCSeconds() : currentDate.getSeconds();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								// start <= value <= finish
							 | 
						||
| 
								 | 
							
								function valueInRange(start, value, finish) {
							 | 
						||
| 
								 | 
							
								    return start <= value && value <= finish;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=timeRange.js.map
							 |