summaryrefslogtreecommitdiff
path: root/node_modules/@11ty/eleventy-utils/src/DateCompare.js
blob: a160ace23f58e84bbeb6d7b494ffb6344120999f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class DateCompare {
	static isTimestampWithinDuration(timestamp, duration, compareDate = Date.now()) {
		// the default duration is Infinity (also "*")
		if (!duration || duration === "*" || duration === Infinity) {
			return true;
		}

		let expiration = timestamp + this.getDurationMs(duration);

		// still valid
		if (expiration > compareDate) {
			return true;
		}

		// expired
		return false;
	}

	static getDurationMs(duration = "0s") {
		let durationUnits = duration.slice(-1);
		let durationMultiplier;
		if (durationUnits === "s") {
			durationMultiplier = 1;
		} else if (durationUnits === "m") {
			durationMultiplier = 60;
		} else if (durationUnits === "h") {
			durationMultiplier = 60 * 60;
		} else if (durationUnits === "d") {
			durationMultiplier = 60 * 60 * 24;
		} else if (durationUnits === "w") {
			durationMultiplier = 60 * 60 * 24 * 7;
		} else if (durationUnits === "y") {
			durationMultiplier = 60 * 60 * 24 * 365;
		}

		let durationValue = parseInt(duration.slice(0, duration.length - 1), 10);
		return durationValue * durationMultiplier * 1000;
	}
}

module.exports = DateCompare;