📅

[TypeScript]与えられた日時に対応する会計年度の開始日時を返す関数

に公開
/**
 * 与えられたJST基準の日付に対応する会計年度の開始日時(4月1日 00:00:00 JST)を返す。
 * 実行環境のタイムゾーンに関係なく、JSTとして扱う。
 *
 * @param date 日本時間として指定されたDateオブジェクト
 * @returns 会計年度開始日時(JST基準)
 */
export const getFiscalYearStartDate = (date: Date): Date => {
  const JST_OFFSET_MS = 9 * 60 * 60 * 1000;
  const jstDate = new Date(date.getTime() + JST_OFFSET_MS);
  const year = jstDate.getUTCMonth() + 1 <= 3
    ? jstDate.getUTCFullYear() - 1
    : jstDate.getUTCFullYear();

  // JSTの4月1日 00:00:00 をISO8601で生成
  return new Date(`${year}-04-01T00:00:00+09:00`);
};

Discussion