fix(frontend): 서버 보정 시각을 로컬 시계로 표시

명령 목록 중앙 시계는 서버 게임 시각과 클라이언트 시각 차이를 보정해 흐르게 한다. 장수 다음 턴과 예약 행 시각도 브라우저 로컬 시간대로 투영한다.
This commit is contained in:
2026-08-15 18:23:13 +00:00
parent 964c780c9b
commit d0b9b8f211
6 changed files with 100 additions and 20 deletions
+16 -1
View File
@@ -1,7 +1,12 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { formatSeoulDateTime, formatSeoulHourMinute, formatSeoulTimeSeconds } from '../src/utils/legacyDateTime.ts';
import {
formatLocalTimeSeconds,
formatSeoulDateTime,
formatSeoulHourMinute,
formatSeoulTimeSeconds,
} from '../src/utils/legacyDateTime.ts';
void test('formats API UTC timestamps in the server Seoul timezone', () => {
assert.equal(formatSeoulDateTime('2026-08-13T00:07:06.713Z'), '2026-08-13 09:07:06');
@@ -14,3 +19,13 @@ void test('keeps legacy timezone-less server timestamps unchanged', () => {
assert.equal(formatSeoulHourMinute('2026-08-13 09:07:06'), '09:07');
assert.equal(formatSeoulTimeSeconds('2026-08-13 09:07:06'), '09:07:06');
});
void test('formats an ISO instant with the client local clock', () => {
const instant = new Date('2026-08-13T00:07:06.713Z');
const expected = [instant.getHours(), instant.getMinutes(), instant.getSeconds()]
.map((part) => String(part).padStart(2, '0'))
.join(':');
assert.equal(formatLocalTimeSeconds(instant), expected);
assert.equal(formatLocalTimeSeconds(instant.toISOString()), expected);
assert.equal(formatLocalTimeSeconds('invalid'), '-');
});