💭

日付や時間の計算に役立つユーティリティ関数をまとめてみた

に公開

日報やCSV出力、Excel貼り付けなど、日付や時間を扱う際に役立つユーティリティ関数をTypeScriptで整理してみました。

数字に弱いので、必要な時に参考しようと思います😀

主な言語
TypeScript


🕒 1. parseTimeToDecimal(timeStr: string): number

"2:30"2.5 に変換する関数です。
作業時間の合計や平均を出す時にとても便利です。

  • 例:分 ÷ 60 = 小数点(例:30 ÷ 60 = 0.5 → 2 + 0.5 = 2.5)
export function parseTimeToDecimal(timeStr: string): number {
  if (!timeStr || !timeStr.includes(':')) return 0;

  const [hoursStr, minutesStr] = timeStr.split(':');
  const hours = parseInt(hoursStr, 10) || 0; //10進数
  const minutes = parseInt(minutesStr, 10) || 0;
  return hours + minutes / 60; 
}

⏳ 2. decimalToTime(decimal: number): string

2.75"2:45" のように、10進数を時間形式に戻す関数です。

  • 例:2.75 → 2:45 小数点 × 60 = 分(例:0.75 × 60 = 45 → 2時間45分)
export function decimalToTime(decimal: number): string {
  const hours = Math.floor(decimal);
  const minutes = Math.round((decimal - hours) * 60);
  return `${hours}:${minutes.toString().padStart(2, '0')}`;
}

⏰ 3. addDecimalHoursToTime(startTime: string, decimalHours: number): string

開始時刻に稼働時間(10進数)を足して、終了時刻を計算します。
例えば "10:00"3.75 を加えると "13:45" を返します。

export function addDecimalHoursToTime(startTime: string, decimalHours: number): string {
  const [startHour, startMinute] = startTime.split(':').map(Number);
  const totalStartMinutes = startHour * 60 + startMinute;
  const addMinutes = Math.round(decimalHours * 60);
  const totalMinutes = totalStartMinutes + addMinutes;

  const endHour = Math.floor(totalMinutes / 60);
  const endMinute = totalMinutes % 60;

  return `${endHour}:${endMinute.toString().padStart(2, '0')}`;
}

📅 4. getDayOfWeek(dateStr: string): string

日付から曜日(日本語)を取得します。
"2025-06-13""金" のように変換されます。

export function getDayOfWeek(dateStr: string): string {
  const days = ['日', '月', '火', '水', '木', '金', '土'];
    // Excelなどで「2025/06/13」のように「/」で区切られた日付を
    //「-」に変換(例:「2025-06-13」)
  const date = new Date(dateStr.replace(/\//g, '-'));
  return days[date.getDay()];
}

🗓️ 5. formatDateToJapanese(dateStr: string): string

ISO形式の日付を「◯月◯日」の形に整えます。
例: "2025-06-13""6月13日"

export function formatDateToJapanese(dateStr: string): string {
    // '-'を基準に年・月・日を取り出す
  const [year, month, day] = dateStr.split('-');
  return `${parseInt(month)}${parseInt(day)}`;
}

Discussion