/**
 * Time utilities — all ISO 8601 timestamps use China Standard Time (UTC+08:00).
 */

/** China timezone offset in minutes (+8 hours) */
const CST_OFFSET_MINUTES = 8 * 60;

/**
 * Get the current time as an ISO 8601 string in China Standard Time (UTC+08:00).
 * Format: "2026-03-25T16:53:51.178+08:00"
 */
export function nowChinaISO(): string {
  return toChinaISO(new Date());
}

/**
 * Convert any Date object to an ISO 8601 string in China Standard Time.
 * Format: "YYYY-MM-DDTHH:mm:ss.SSS+08:00"
 */
export function toChinaISO(date: Date): string {
  const utcMs = date.getTime();
  const cstMs = utcMs + CST_OFFSET_MINUTES * 60 * 1000;
  const cst = new Date(cstMs);
  const year = cst.getUTCFullYear();
  const month = String(cst.getUTCMonth() + 1).padStart(2, "0");
  const day = String(cst.getUTCDate()).padStart(2, "0");
  const hours = String(cst.getUTCHours()).padStart(2, "0");
  const minutes = String(cst.getUTCMinutes()).padStart(2, "0");
  const seconds = String(cst.getUTCSeconds()).padStart(2, "0");
  const ms = String(cst.getUTCMilliseconds()).padStart(3, "0");
  return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${ms}+08:00`;
}
