{"ScriptPreparationCode":"function parseDateAsUtc(dateString) {\r\n const formatTime = time =\u003E {\r\n if (!time) return \u002700\u0027;\r\n if (time.length === 1) return \u0060${time}0\u0060;\r\n\r\n return time;\r\n };\r\n const [datePart, timePart] = dateString.split(\u0027T\u0027);\r\n const parts = timePart.split(\u0027:\u0027);\r\n\r\n const hours = formatTime(parts[0]);\r\n const minutes = formatTime(parts[1]);\r\n const seconds = formatTime(parts[2]);\r\n\r\n return new Date(\u0060${datePart}T${hours}:${minutes}:${seconds}.000Z\u0060);\r\n};","TestCases":[{"Name":"MomentJS","Code":"const cacheDurationMinutes = 60;\r\nconst defaultTtl = cacheDurationMinutes * 60;\r\nconst effectiveDate = \u00272025-07-18T18\u0027;\r\nconst now = moment.utc();\r\nconst keyEffectiveDateStart = moment.utc(effectiveDate);\r\nconst keyEffectiveDateEnd = keyEffectiveDateStart.clone()\r\n.add(cacheDurationMinutes, \u0027minutes\u0027);\r\nconst secondsTillKeyEnd = keyEffectiveDateEnd.diff(now, \u0027seconds\u0027);\r\n\r\nconst result = Math.min(defaultTtl, Math.max(0, secondsTillKeyEnd)) || defaultTtl;","IsDeferred":false},{"Name":"Date JS","Code":"const cacheDurationMinutes = 60;\r\nconst defaultTtl = cacheDurationMinutes * 60;\r\n\r\nconst effectiveDate = \u00272025-07-18T18\u0027; \r\n\r\nconst now = new Date();\r\n\r\nconst keyEffectiveDateStart = parseDateAsUtc(effectiveDate);\r\n\r\nconst keyEffectiveDateEnd = new Date(keyEffectiveDateStart.getTime()); \r\n\r\n//keyEffectiveDateEnd.setUTCMinutes(keyEffectiveDateEnd.getUTCMinutes() \u002B cacheDurationMinutes); \r\nconst millisecondsInMinute = 60000;\r\nkeyEffectiveDateEnd.setTime(keyEffectiveDateEnd.getTime() \u002B cacheDurationMinutes * millisecondsInMinute);\r\n\r\nconst secondsTillKeyEnd = (keyEffectiveDateEnd.getTime() - now.getTime()) / 1000;\r\n\r\nconst result = Math.min(defaultTtl, Math.max(0, secondsTillKeyEnd)) || defaultTtl; ","IsDeferred":false},{"Name":"Date-Fns","Code":"const cacheDurationMinutes = 60;\r\nconst defaultTtl = cacheDurationMinutes * 60;\r\n\r\nconst effectiveDate = \u00272025-07-18T18\u0027;\r\n\r\nconst now = new Date();\r\n\r\nconst keyEffectiveDateStart = parseDateAsUtc(effectiveDate);\r\n\r\nconst keyEffectiveDateEnd = dateFns.addMinutes(keyEffectiveDateStart, cacheDurationMinutes);\r\n\r\nconst secondsTillKeyEnd = dateFns.differenceInSeconds(keyEffectiveDateEnd, now);\r\n\r\nconst result = Math.min(defaultTtl, Math.max(0, secondsTillKeyEnd)) || defaultTtl;","IsDeferred":false}]}