💭
日付や時間の計算に役立つユーティリティ関数をまとめてみた
日報やCSV出力、Excel貼り付けなど、日付や時間を扱う際に役立つユーティリティ関数をTypeScriptで整理してみました。
数字に弱いので、必要な時に参考しようと思います😀
主な言語
TypeScript
parseTimeToDecimal(timeStr: string): number
🕒 1. "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;
}
decimalToTime(decimal: number): string
⏳ 2. 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')}`;
}
addDecimalHoursToTime(startTime: string, decimalHours: number): string
⏰ 3. 開始時刻に稼働時間(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')}`;
}
getDayOfWeek(dateStr: string): string
📅 4. 日付から曜日(日本語)を取得します。
"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()];
}
formatDateToJapanese(dateStr: string): string
🗓️ 5. ISO形式の日付を「◯月◯日」の形に整えます。
例: "2025-06-13"
→ "6月13日"
export function formatDateToJapanese(dateStr: string): string {
// '-'を基準に年・月・日を取り出す
const [year, month, day] = dateStr.split('-');
return `${parseInt(month)}月${parseInt(day)}日`;
}
Discussion