From d6af254eab5db5c8864f29006e97fca7575ee07b Mon Sep 17 00:00:00 2001 From: h202-wq Date: Tue, 18 Aug 2026 19:19:47 -0400 Subject: [PATCH] Changed verse change to 2AM EST DST --- src/App.tsx | 4 ++-- src/verse.ts | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 5f89484..d313d06 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import { useCallback, useEffect, useState } from 'react' import CandleCanvas from './Candle' -import { daySeed, loadKJV, msUntilMidnightUtc, pickForDay, type Verse } from './verse' +import { daySeed, loadKJV, msUntilRollover, pickForDay, type Verse } from './verse' type Phase = 'sealed' | 'revealing' | 'revealed' @@ -19,7 +19,7 @@ export default function App() { const [error, setError] = useState(false) useEffect(() => { - const update = () => setCountdown(formatCountdown(msUntilMidnightUtc())) + const update = () => setCountdown(formatCountdown(msUntilRollover())) update() const id = window.setInterval(update, 1000) return () => window.clearInterval(id) diff --git a/src/verse.ts b/src/verse.ts index e8243b7..052010d 100644 --- a/src/verse.ts +++ b/src/verse.ts @@ -24,13 +24,17 @@ export interface Verse { let flat: Verse[] | null = null +const ROLLOVER_LOCAL_HOUR = 2 + export function daySeed(now: Date = new Date()): number { - return Math.floor(now.getTime() / 86_400_000) + const shifted = new Date(now.getTime() - ROLLOVER_LOCAL_HOUR * 3600_000) + return Math.floor(Date.UTC(shifted.getFullYear(), shifted.getMonth(), shifted.getDate()) / 86_400_000) } -export function msUntilMidnightUtc(now: Date = new Date()): number { +export function msUntilRollover(now: Date = new Date()): number { const next = new Date(now) - next.setUTCHours(24, 0, 0, 0) + next.setHours(ROLLOVER_LOCAL_HOUR, 0, 0, 0) + if (next.getTime() <= now.getTime()) next.setDate(next.getDate() + 1) return next.getTime() - now.getTime() }