Download packages/console/core/src/util/date.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.2 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/console/core/src/util/date.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/console/core/src/util/date.ts
-
curl -L -o date.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/console/core/src/util/date.ts
1.2 kB
| export function getWeekBounds(date: Date) { | |
| const offset = (date.getUTCDay() + 6) % 7 | |
| const start = new Date(date) | |
| start.setUTCDate(date.getUTCDate() - offset) | |
| start.setUTCHours(0, 0, 0, 0) | |
| const end = new Date(start) | |
| end.setUTCDate(start.getUTCDate() + 7) | |
| return { start, end } | |
| } | |
| export function getMonthlyBounds(now: Date, subscribed: Date) { | |
| const day = subscribed.getUTCDate() | |
| const hh = subscribed.getUTCHours() | |
| const mm = subscribed.getUTCMinutes() | |
| const ss = subscribed.getUTCSeconds() | |
| const ms = subscribed.getUTCMilliseconds() | |
| function anchor(year: number, month: number) { | |
| const max = new Date(Date.UTC(year, month + 1, 0)).getUTCDate() | |
| return new Date(Date.UTC(year, month, Math.min(day, max), hh, mm, ss, ms)) | |
| } | |
| function shift(year: number, month: number, delta: number) { | |
| const total = year * 12 + month + delta | |
| return [Math.floor(total / 12), ((total % 12) + 12) % 12] as const | |
| } | |
| let y = now.getUTCFullYear() | |
| let m = now.getUTCMonth() | |
| let start = anchor(y, m) | |
| if (start > now) { | |
| ;[y, m] = shift(y, m, -1) | |
| start = anchor(y, m) | |
| } | |
| const [ny, nm] = shift(y, m, 1) | |
| const end = anchor(ny, nm) | |
| return { start, end } | |
| } | |