JavaScript UTC・韓国時間(KST)変換 - 実務で使える3つの関数
問題
バックエンドはUTCで保存しているのに、フロントエンドでは韓国時間で表示しなければなりません。toLocaleStringはブラウザによって結果が異なる場合があるため、直接変換する方が安全です。
解決方法
// 1. 韓国日付文字列 → UTC日付
function toUtcDate(koreaDateStr) {
const date = new Date(koreaDateStr + 'T00:00:00+09:00');
return date.toISOString().split('T')[0];
}
// 2. UTCタイムスタンプ → 韓国日付
function toKoreaDate(utcTimestamp) {
const date = new Date(utcTimestamp);
if (isNaN(date.getTime())) return '';
const koreaTime = new Date(date.getTime() + 9 * 60 * 60 * 1000);
return koreaTime.toISOString().split('T')[0];
}
// 3. 韓国の1日分のUTC範囲(APIクエリ用)
function getUtcDateRange(koreaDateStr) {
const startUtc = toUtcDate(koreaDateStr);
const nextDay = new Date(koreaDateStr + 'T00:00:00+09:00');
nextDay.setDate(nextDay.getDate() + 1);
const endUtc = toUtcDate(nextDay.toISOString().split('T')[0]);
return [startUtc, endUtc];
}
ポイント
- 韓国の深夜0時(00:00 KST)は前日の15:00 UTCです。日付基準でクエリする際は、UTCの範囲を2日分に設定しないとデータが欠落します。
- パース時に
+09:00オフセットを直接付与することで、タイムゾーンライブラリなしでも正確に変換できます。 9 * 60 * 60 * 1000(32,400,000ms)を加算する方法は、サマータイムのない韓国では完璧に動作します。