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
 |