플립 시계
전체 화면, 12/24시간 모드, 초 표시를 지원하는 실시간 디지털 플립 시계입니다.
플립 시계란?
이 도구는 각 자릿수가 변경될 때마다 사실적인 페이지 넘김 애니메이션으로 클래식 플립 시계 효과를 완벽하게 재현합니다. 다운로드 없이 브라우저에서 직접 실행되며, 전체 화면 모드, 12/24시간 형식 전환, 선택적 초 표시 기능을 갖추고 있습니다.
용도: 데스크 시계, 사무실 장식, 라이브 스트리밍 배경, 프레젠테이션 타이머, 포모도로 기법, 대형 화면 등. 모든 시간 계산은 로컬에서 수행되어 개인정보를 보호합니다.
사용 방법
사용 방법
- 시계는 현재 시간을 자동으로 표시하고 실시간으로 업데이트됩니다
- '12H/24H' 버튼을 클릭하여 시간 형식을 전환합니다
- 'Seconds/No seconds' 버튼을 클릭하여 초 표시 여부를 전환합니다
- 'Fullscreen' 버튼을 클릭하여 전체 화면 모드로 전환합니다
- 설정은 자동으로 저장되며 다음 방문 시 복원됩니다
팁
- 프로젝터, 벽 디스플레이 또는 여분의 태블릿에서 방 안 어디서나 시계가 잘 보이도록 하려면 전체 화면 모드를 사용하세요.
- 회의, 수업, 행사 등 진행 중 시계가 계속 보여야 한다면 시스템 절전 모드와 화면 자동 어두워짐을 꺼 두세요.
- 여러 지역이 공유하는 일정에는 24시간제를 선택하고, 정밀한 타이밍이 필요할 때만 초를 표시하세요.
활용 사례
기술 원리
시간 자체는 Unix 에포크 이후 밀리초 단위의 Date.now()에서 가져오지만, 단순한 setInterval(fn, 1000)은 타이머가 최선 effort 스케줄링으로 실행되어 누적 편차가 발생합니다. 대신 다음 틱을 1000 - (Date.now() % 1000)으로 계산하여 실제 시계의 초 경계에 정확히 맞추고, requestAnimationFrame으로 플립 전환을 처리하므로 탭이 포커스를 잃거나 모니터가 절전 상태일 때 애니메이션이 자동으로 일시정지됩니다. Page Visibility API(document.visibilityState)가 visibilitychange 이벤트에서 표시 자릿수를 재동기화하므로, 사용자가 몇 분 후 돌아왔을 때 오래된 값이 표시되는 것을 방지합니다.
표시 형식은 hourCycle 옵션('h23'은 24시간제, 'h12'는 오전/오후 12시간제)과 함께 Intl.DateTimeFormat에서 브라우저 로케일을 읽어옵니다. 일광 절약 시간 전환은 getHours() 같은 Date 메서드가 이미 오프셋 시프트를 포함한 로컬 시간을 반환하므로 암묵적으로 처리되어, 봄에는 02:00에서 03:00으로 건너뛰고 가을에는 01:00이 두 번 표시됩니다.
- 3D 플립: 절대 레이어에 CSS transform: rotateX(-180deg) 적용, 부모 perspective: 600px, 거울상의 뒷면을 억제하는 backface-visibility: hidden
- GPU 합성: will-change: transform이 플립 요소를 자체 레이어로 승격하여 전환을 다시 그리기 대신 합성 처리
- 드리프트 없는 틱: setTimeout 지연을 1000 - (Date.now() % 1000)으로 계산하여 각 틱이 타이머 편차 누적 대신 실제 초 경계에 정확히 도달
- 애니메이션 타이밍: requestAnimationFrame이 0deg에서 -180deg 전환을 구동하며, 백그라운드 탭에서는 브라우저가 자동으로 스로틀링
- 백그라운드 복구: Page Visibility API가 visibilitychange를 수신하고 Date.now()를 다시 읽어 탭이 포커스를 되찾을 때 자릿수가 올바른 값으로 점프
- 로케일 및 시간 주기: hourCycle 'h23' 또는 'h12'를 사용하는 Intl.DateTimeFormat이 사용자의 시스템 로케일에서 24시간제 또는 12시간제(오전/오후) 표시를 선택
- 전체 화면 제어: Element.requestFullscreen()와 document.exitFullscreen()이 벽면 표시 모드를 구동하며, Esc가 표준 종료 키
예시
데스크톱에서 사용
브라우저 창 크기를 조절하여 데스크톱 한쪽 모서리에 상시 시계로 배치하세요.대형 화면 표시
프로젝터나 대형 디스플레이에 연결한 뒤 F11로 전체 화면을 켜고 회의실이나 행사장에서 표시할 수 있습니다.라이브 방송 배경
OBS에서 브라우저 소스를 추가하고 플립 시계 URL을 방송 배경으로 사용하세요.자주 묻는 질문
이 시계는 어떤 시간대를 사용하나요?
기기의 OS에 설정된 로컬 시간대를 사용합니다. 다른 시간대를 표시하려면 별도의 세계 시계 도구를 이용하세요. 시스템 시간 자체를 따르므로 VPN이나 시간대 위장으로는 변경되지 않습니다.
12시간제와 24시간제를 전환할 수 있나요?
네. 설정에서 전환할 수 있습니다. 12시간제는 AM/PM을 함께 표시하고, 24시간제는 AM/PM 없이 00~23으로 표시합니다. 취향대로 선택하시면 되며, 일부 빌드는 기본적으로 OS 로케일을 따릅니다.
초가 1초 이상씩 건너뛰는 이유가 무엇인가요?
백그라운드 탭 스로틀링 때문입니다. 다른 탭으로 전환하면 브라우저가 업데이트 빈도를 늦추고, 돌아오면 시계가 건너뛰어 따라잡습니다. 부드러운 애니메이션을 원하면 탭을 활성화 상태로 두세요. 활성 상태에서도 건너뛴다면 CPU 과부하일 수 있으니 다른 작업을 점검해 보세요.
플립 애니메이션이 성능에 영향을 주나요?
CSS transform 애니메이션은 GPU 가속을 받아 최신 기기에서는 부담이 매우 적습니다. 오래된 노트북이나 폰에서는 1초마다 약간의 끊김이 보일 수 있는데, 이 경우 설정에서 플립 애니메이션을 끄고 정적인 시계 화면으로 사용하세요.
밤새 전체 화면으로 켜둘 수 있나요?
네. 책상 시계나 머리맡 시계로 쓰도록 전체 화면 사용을 염두에 두고 설계되었습니다. 다만 최신 OS는 일정 시간이 지나면 화면을 어둡게 하거나 절전 모드로 전환하므로, 디스플레이 설정에서 '절전 안 함'으로 지정하거나 OS의 NoSleep 기능을 사용하세요. 노트북은 전원에 연결하시고, 배터리 절전 모드는 탭을 일시 정지시킬 수 있다는 점도 참고하세요.
장시간 켜두어도 시간이 정확하게 유지되나요?
네. 시계는 시스템 시간을 기반으로 하며, 네트워크에 연결된 기기는 NTP를 통해 동기화됩니다. 최신 OS에서 24시간 동안 켜두어도 일반적으로 1초 이내의 오차에 그칩니다.
전송되는 데이터가 있나요?
아니요. 시계는 기기의 시간을 읽어올 뿐이며 어떤 데이터도 기록되거나 전송되지 않습니다.