はじめに
TypeScript で文字列形式で表現された時間(例えば "00:05:30"
や "30"
)を、秒数に変換する関数 convertToSeconds
を実装しました。
以下で、各部分を詳しく説明します。
実装
export const convertToSeconds = function( durationTime:string ){ // 00:05:30 => 330
const timeArray = durationTime.split(':');
if(timeArray[3]) return 0;
if(timeArray[1] && timeArray[2]){ // 00:05:30
// 数字以外が入力された場合
if( isNaN( Number(timeArray[0]) ) || isNaN( Number(timeArray[1]) ) || isNaN( Number(timeArray[2]) ) ) return 0;
const hours =
( Number(timeArray[0]) > 2 ) ? 2*60*60 : Number(timeArray[0]) * 60 * 60;
const minutes =
( Number(timeArray[1]) >= 60 ) ? 59*60 : Number(timeArray[1]) * 60 ;
const seconds =
( Number(timeArray[2]) >= 60 ) ? 59 : Number(timeArray[2]);
return hours + minutes + seconds;
}else if( timeArray[1] && !timeArray[2]){ // 05:30
if( isNaN( Number(timeArray[0]) ) || isNaN( Number(timeArray[1]) ) ) return 0;
const minutes =
( Number(timeArray[0]) >= 60 ) ? 59*60 : Number(timeArray[0]) * 60 ;
const seconds =
( Number(timeArray[1]) >= 60 ) ? 59 : Number(timeArray[1]);
return minutes + seconds;
}else if(!timeArray[1] && !timeArray[2]){ // 30
if( isNaN( Number(timeArray[0]) ) ) return 0;
const seconds =
( Number(timeArray[0]) >= 60 ) ? 59 : Number(timeArray[0]);
return seconds;
}else{
return 0;
}
};
関数の概要
convertToSeconds
関数は、与えられた時間文字列をコロン(:
)で区切り、その時間を秒単位で返します。入力には以下の形式がサポートされています:
-
00:05:30
(時:分:秒) -
05:30
(分:秒) -
30
(秒)
引数と返り値
-
引数:
durationTime
(string
型)- 文字列で時間を表現します。例えば
"00:05:30"
や"30"
など。
- 文字列で時間を表現します。例えば
-
返り値:
number
- 秒数に変換した結果を返します。無効な入力(例えば、数字以外の文字が含まれる場合)には
0
を返します。
- 秒数に変換した結果を返します。無効な入力(例えば、数字以外の文字が含まれる場合)には
使用例
-
convertToSeconds("00:05:30")
秒数に変換すると、330
秒(5分30秒)を返します。 -
convertToSeconds("05:30")
秒数に変換すると、330
秒(5分30秒)を返します。 -
convertToSeconds("30")
秒数に変換すると、30
秒を返します。 -
convertToSeconds("00:70:30")
無効な時間形式として、0
を返します。70分は無効とみなされ、最も近い有効な時間(59分30秒)に丸められます。
おわりに
この関数は、さまざまな形式の時間文字列を秒数に変換する便利なツールです。入力が無効な場合は0を返すことで、エラーを防ぎます。また、時間、分、秒の範囲外の値に対しても適切に丸め処理を行っています。