diff --git a/client/src/utils/ProgramUtils.ts b/client/src/utils/ProgramUtils.ts index 71c99c35..b2a2bc7c 100644 --- a/client/src/utils/ProgramUtils.ts +++ b/client/src/utils/ProgramUtils.ts @@ -425,7 +425,7 @@ export class ProgramUtils { /** - * 番組の放送時刻を取得する + * 番組放送時刻の文字列表現を取得する * @param program 番組情報 * @param is_short 時刻のみ返すかどうか * @returns 番組の放送時刻 @@ -437,8 +437,10 @@ export class ProgramUtils { dayjs.locale('ja'); // ロケールを日本に設定 const start_time = dayjs(program.start_time); + const end_time = dayjs(program.end_time); - // duration が Infinity の場合は、放送時間未定として扱う + // duration が Infinity の場合は、end_time を無視して放送時間未定として扱う + // この時 end_time には便宜上 start_time と同一の時刻が設定されるため、参照してはいけない if (program.duration === Infinity) { if (is_short === true) { // 時刻のみ return `${start_time.format('HH:mm')} ~ --:--`; @@ -447,8 +449,8 @@ export class ProgramUtils { } } - const end_time = dayjs(program.end_time); - const duration = program.duration / 60; // 分換算 + // 分単位の番組長 (割り切れない場合は小数第2位で四捨五入) + const duration = Math.round(program.duration / 60 * 100) / 100; if (is_short === true) { // 時刻のみ return `${start_time.format('HH:mm')} ~ ${end_time.format('HH:mm')}`; diff --git a/client/src/workers/LivePSIArchivedDataDecoder.ts b/client/src/workers/LivePSIArchivedDataDecoder.ts index a513823e..a41ec8fb 100644 --- a/client/src/workers/LivePSIArchivedDataDecoder.ts +++ b/client/src/workers/LivePSIArchivedDataDecoder.ts @@ -230,7 +230,7 @@ class LivePSIArchivedDataDecoder implements ILivePSIArchivedDataDecoder { } // 番組開始時刻と番組長から番組終了時刻を算出 - // ただし、番組長が未定の場合は番組終了時刻を番組開始時刻と同一の値にする + // ただし、番組長が未定の場合は便宜上番組終了時刻を番組開始時刻と同一の時刻にする if (program.duration === Infinity) { program.end_time = program.start_time; } else { @@ -394,6 +394,7 @@ class LivePSIArchivedDataDecoder implements ILivePSIArchivedDataDecoder { program.secondary_audio_sampling_rate = null; } + console.debug('[PSIArchivedDataDecoder] EIT[p/f] decoded.', program); return program; }