MCPcopy Index your code
hub / github.com/scriptscat/scriptcat / getISOWeek

Function getISOWeek

src/pkg/utils/utils.ts:528–542  ·  view source on GitHub ↗
(date: Date)

Source from the content-addressed store, hash-verified

526// 见 https://wikipedia.org/wiki/ISO_week_date
527// 中文说明 https://juejin.cn/post/6921245139855736846
528export const getISOWeek = (date: Date): number => {
529 // 使用传入日期的年月日创建 UTC 日期对象,忽略本地时间部分,避免时区影响
530 const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
531
532 // 将日期调整到本周的星期四(ISO 8601 规定:周数以星期四所在周为准)
533 // 计算方式:当前日期 + 4 − 当前星期几(星期一 = 1,星期日 = 7)
534 d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
535
536 // 获取该星期四所在年份的第一天(UTC)
537 const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
538
539 // 计算从年初到该星期四的天数差
540 // 再换算为周数,并向上取整,得到 ISO 周数
541 return Math.ceil(((d.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
542};
543
544export function stripUndefined<T extends Record<string, unknown>, K = T | undefined>(obj: K | T): K | T {
545 if (!obj || typeof obj !== "object") return obj;

Callers 1

execScriptMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected