MCPcopy Index your code
hub / github.com/darkreader/darkreader / nextTimeChangeAtLocation

Function nextTimeChangeAtLocation

src/utils/time.ts:265–305  ·  view source on GitHub ↗
(
    latitude: number,
    longitude: number,
    date: Date = new Date(),
)

Source from the content-addressed store, hash-verified

263}
264
265export function nextTimeChangeAtLocation(
266 latitude: number,
267 longitude: number,
268 date: Date = new Date(),
269): number {
270 const time = getSunsetSunriseUTCTime(latitude, longitude, date);
271
272 if (time.alwaysDay) {
273 return date.getTime() + getDuration({days: 1});
274 } else if (time.alwaysNight) {
275 return date.getTime() + getDuration({days: 1});
276 }
277
278 const [firstTimeOnDay, lastTimeOnDay] = time.sunriseTime < time.sunsetTime ? [time.sunriseTime, time.sunsetTime] : [time.sunsetTime, time.sunriseTime];
279 const currentTime = (
280 date.getUTCHours() * getDuration({hours: 1}) +
281 date.getUTCMinutes() * getDuration({minutes: 1}) +
282 date.getUTCSeconds() * getDuration({seconds: 1}) +
283 date.getUTCMilliseconds()
284 );
285
286 if (currentTime <= firstTimeOnDay!) {
287 // Timeline:
288 // --- firstTimeOnDay <---> lastTimeOnDay ---
289 // ^
290 // Current time
291 return Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0, firstTimeOnDay);
292 }
293 if (currentTime <= lastTimeOnDay!) {
294 // Timeline:
295 // --- firstTimeOnDay <---> lastTimeOnDay ---
296 // ^
297 // Current time
298 return Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), 0, 0, 0, lastTimeOnDay);
299 }
300 // Timeline:
301 // --- firstTimeOnDay <---> lastTimeOnDay ---
302 // ^
303 // Current time
304 return Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + 1, 0, 0, 0, firstTimeOnDay);
305}

Callers 2

updateAutoStateMethod · 0.90
time.tests.tsFile · 0.90

Calls 2

getSunsetSunriseUTCTimeFunction · 0.85
getDurationFunction · 0.85

Tested by

no test coverage detected