{"ScriptPreparationCode":"var start_timestamp = new Date(\u00272018-01-04T16:30:00.000Z\u0027);\r\nvar end_timestamp = new Date(\u00272018-01-05T14:00:00.000Z\u0027);\r\n\r\nvar now1 = new Date(\u00272018-06-05T11:30:00.000Z\u0027);\r\nvar now2 = new Date(\u00272018-06-05T15:30:00.000Z\u0027);\r\nvar now3 = new Date(\u00272018-06-04T11:30:00.000Z\u0027);\r\nvar now4 = new Date(\u00272018-06-04T15:30:00.000Z\u0027);\r\n\r\nvar DAY = 24 * 60 * 60 * 1000;\r\nvar WEEK = DAY * 7;\r\n\r\nvar checkRepeated = (now, start, end, isDaily) =\u003E {\r\n const repeat = isDaily ? DAY : WEEK;\r\n if (now \u003E start \u0026\u0026 now \u003C end) {\r\n return true;\r\n } else if (now \u003E start) {\r\n const count = Math.floor((now - start) / repeat);\r\n const newStart = (count * repeat) \u002B start;\r\n const newEnd = (count * repeat) \u002B end;\r\n if (now \u003E newStart \u0026\u0026 now \u003C newEnd) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nvar isBetween = (now, start, end, isDaily) =\u003E {\r\n if (isDaily) {\r\n if (start - end \u003E= 86400000) {\r\n return true;\r\n }\r\n } else {\r\n const nowDay = now.getDay();\r\n if (nowDay \u003C start.getDay() || nowDay \u003E end.getDay()) {\r\n return false;\r\n }\r\n } \r\n\r\n const time = now - (new Date(now)).setHours(0, 0, 0, 0);\r\n const startDate = (new Date(start)).setHours(0, 0, 0, 0);\r\n const startTime = start - startDate;\r\n const endDate = (new Date(end)).setHours(0, 0, 0, 0);\r\n const endTime = end - endDate;\r\n return time \u003E startTime || (endDate \u003E startDate \u0026\u0026 time \u003C endTime);\r\n}\r\n\r\nvar isBetweenMath = (now, start, end, isDaily) =\u003E {\r\n if (isDaily) {\r\n if (end - start \u003E= 86400000) {\r\n return true;\r\n }\r\n } else {\r\n const nowDay = now.getDay();\r\n\r\n if (nowDay \u003C start.getDay() || nowDay \u003E end.getDay()) {\r\n return false;\r\n }\r\n }\r\n\r\n const time = now % 86400000;\r\n const startTime = start % 86400000;\r\n const endTime = end % 86400000;\r\n return time \u003E startTime || ((end - endTime) \u003E (start - startTime) \u0026\u0026 time \u003C endTime);\r\n}","TestCases":[{"Name":"Math","Code":"checkRepeated(now1, start_timestamp, end_timestamp, true);\r\ncheckRepeated(now2, start_timestamp, end_timestamp, true);\r\ncheckRepeated(now3, start_timestamp, end_timestamp, true);\r\ncheckRepeated(now4, start_timestamp, end_timestamp, true);\r\n\r\ncheckRepeated(now1, start_timestamp, end_timestamp, false);\r\ncheckRepeated(now2, start_timestamp, end_timestamp, false);\r\ncheckRepeated(now3, start_timestamp, end_timestamp, false);\r\ncheckRepeated(now4, start_timestamp, end_timestamp, false);","IsDeferred":false},{"Name":"Date Manipulation","Code":"isBetween(now1, start_timestamp, end_timestamp, true);\r\nisBetween(now2, start_timestamp, end_timestamp, true);\r\nisBetween(now3, start_timestamp, end_timestamp, true);\r\nisBetween(now4, start_timestamp, end_timestamp, true);\r\n\r\nisBetween(now1, start_timestamp, end_timestamp, false);\r\nisBetween(now2, start_timestamp, end_timestamp, false);\r\nisBetween(now3, start_timestamp, end_timestamp, false);\r\nisBetween(now4, start_timestamp, end_timestamp, false);","IsDeferred":false},{"Name":"More Math","Code":"isBetweenMath(now1, start_timestamp, end_timestamp, true);\r\nisBetweenMath(now2, start_timestamp, end_timestamp, true);\r\nisBetweenMath(now3, start_timestamp, end_timestamp, true);\r\nisBetweenMath(now4, start_timestamp, end_timestamp, true);\r\n\r\nisBetweenMath(now1, start_timestamp, end_timestamp, false);\r\nisBetweenMath(now2, start_timestamp, end_timestamp, false);\r\nisBetweenMath(now3, start_timestamp, end_timestamp, false);\r\nisBetweenMath(now4, start_timestamp, end_timestamp, false);","IsDeferred":false}]}