상위 문서 안내를 일반 내부 링크로 교정 |
주제별 분류 적용: 사이트 운영; 상위 분류 중복 정리 |
||
| 52번째 줄: | 52번째 줄: | ||
* [[라이믹스/매뉴얼/라이믹스 프레임워크]] — DateTime | * [[라이믹스/매뉴얼/라이믹스 프레임워크]] — DateTime | ||
* [[라이믹스/XE에서 넘어오기]] | * [[라이믹스/XE에서 넘어오기]] | ||
== 관련 운영 문서 == | |||
* [[라이믹스/매뉴얼/Crontab 설정 방법|예약 작업의 실행 시간대]] | |||
* [[라이믹스/매뉴얼/설치 환경|PHP 설치 환경]] | |||
== 출처 == | == 출처 == | ||
이 문서는 [https://rhymix.org/manual/misc/timezone 라이믹스 공식 매뉴얼]을 바탕으로 설명과 예제를 정리하였다. 공식 매뉴얼은 CC BY-SA 4.0으로 배포된다. 원문의 기여 이력은 [https://github.com/rhymix/rhymix-docs rhymix-docs 저장소]에서 확인할 수 있다. | 이 문서는 [https://rhymix.org/manual/misc/timezone 라이믹스 공식 매뉴얼]을 바탕으로 설명과 예제를 정리하였다. 공식 매뉴얼은 CC BY-SA 4.0으로 배포된다. 원문의 기여 이력은 [https://github.com/rhymix/rhymix-docs rhymix-docs 저장소]에서 확인할 수 있다. | ||
{{라이믹스 매뉴얼}} | |||
[[분류:라이믹스/매뉴얼]] | |||
[[분류:라이믹스/매뉴얼/사이트 운영|표준 시간대 처리 방식]] | |||
2026년 10월 17일 (토) 09:20 기준 최신판
상위 문서: 라이믹스/매뉴얼
개요[편집 / 원본 편집]
라이믹스는 서버 이전이나 일광절약시간제(서머타임) 변경으로 기존 문서의 작성 시각이 달라지는 문제를 줄이기 위해 서버 시간대, 내부 시간대, 표시 시간대를 구분한다.
세 가지 시간대[편집 / 원본 편집]
| 구분 | 역할 | 처리 원칙 |
|---|---|---|
| 서버 자체 시간대 | 운영체제의 현지 시간 설정 | 서버의 시각 자체는 정확해야 하며, 라이믹스는 별도의 내부 기준을 사용 |
| 내부 시간대 | DB 저장과 서버측 날짜 처리 기준 | 신규 설치·XE에서 전환 시 결정되고 유지 |
| 디스플레이 시간대 | 사용자에게 날짜를 보여 주는 기준 | 관리자가 바꿀 수 있으며 사용자별로 다를 가능성도 고려 |
XE는 저장된 날짜가 어떤 서버 시간대를 기준으로 했는지 기록하지 않아, 서버 이전이나 시간대 변경 때 과거 날짜가 어긋날 수 있었다. 라이믹스는 고정된 내부 기준으로 저장한 뒤 표시할 때 변환한다.
내부 시간대[편집 / 원본 편집]
설정 키는 locale.internal_timezone이다. 공식 매뉴얼은 한국어 사이트의 기존 XE 호환을 위해 UTC+9(32400초), 그 밖의 경우 UTC(0초)를 설치·전환 시 정하는 방식으로 설명한다. 실제 사이트의 저장 기준은 해당 설정과 설치 이력을 확인한다.
이미 운영 중인 사이트의 시간을 맞추려고 내부 시간대를 임의로 변경하지 않는다. 저장된 날짜를 해석하는 기준이므로, 화면 표시 설정과 다르다. DB에 날짜를 저장하는 모듈·애드온은 내부 시간대를 사용한다.
getInternalDateTime() 등 라이믹스의 시간 함수를 사용할 수 있다. 흔히 사용하는 저장 문자열은 YmdHis, 즉 YYYYMMDDHHMMSS 형식이다. 유닉스 타임스탬프는 특정 순간을 나타내므로 시간대를 바꾸어 더하거나 빼는 방식으로 저장하지 않는다. 타임스탬프를 DB에 저장하는 새 자료는 범위에 맞는 자료형도 확인한다.
표시 시간대[편집 / 원본 편집]
기본 설정 키는 locale.default_timezone이다. 예를 들어 Asia/Seoul처럼 이름으로 지정하여 서머타임 규칙도 함께 처리한다. 표시 설정을 바꾸는 것은 이미 저장된 날짜의 내부 기준을 바꾸는 작업과 다르다.
화면 출력에는 zdate(), getDisplayDateTime(), 문서·댓글 객체의 getRegdate() 등을 사용한다. 날짜 변환을 이미 수행한 값에 다시 9시간을 더하는 식의 중복 보정을 피한다.
개발 시 선택[편집 / 원본 편집]
| 작업 | 사용할 기준 |
|---|---|
| 작성·수정 일시를 DB에 저장 | 내부 시간대 |
| 글 목록·본문의 작성 시각 표시 | 디스플레이 시간대 |
| 시간 차이·만료 계산 | 같은 기준의 타임스탬프 등 일관된 표현 |
| 외부 API와 날짜 교환 | 상대 API의 형식과 시간대를 명시하여 변환 |
다른 지역의 사용자가 같은 글을 보더라도 같은 순간을 서로 다른 현지 시각으로 표시할 수 있음을 고려한다. 날짜 문자열을 비교하거나 캐시할 때도 시간대 의존 여부를 확인한다.
서버 이전 후 시간이 다를 때[편집 / 원본 편집]
- 운영체제의 실제 시각과 동기화를 확인한다.
- 라이믹스의 내부 시간대와 표시 시간대를 구분하여 확인한다.
- 서드파티 자료가 서버 시간대나 고정된 시차를 직접 사용하는지 확인한다.
- DB 값을 일괄 수정하기 전에 백업과 원인 분석을 먼저 수행한다.
같이 보기[편집 / 원본 편집]
- 라이믹스/매뉴얼/라이믹스 프레임워크 — DateTime
- 라이믹스/XE에서 넘어오기
관련 운영 문서[편집 / 원본 편집]
출처[편집 / 원본 편집]
이 문서는 라이믹스 공식 매뉴얼을 바탕으로 설명과 예제를 정리하였다. 공식 매뉴얼은 CC BY-SA 4.0으로 배포된다. 원문의 기여 이력은 rhymix-docs 저장소에서 확인할 수 있다.
| 라이믹스 · 설치·운영·개발 매뉴얼 둘러보기 | |
|---|---|
| 설치·이전 | 설치 환경 · 설치 · 업데이트 · XE에서 이전 · 호환성 점검 · nginx · 도메인 변경 |
| 운영 | 백업·복원 · 업로드·서버 진단 · 캐시·성능 · Crontab · 보안 · 릴리즈 노트 |
| 개발 | 확장 기능 제작 · 애드온 · DB 연산자 · 라우터 · 이벤트 · 개발 보안 |
| 테마·API | 테마 제작 · 템플릿 v1 · 템플릿 v2 · 프레임워크 · PHP 전역 함수 · JS 라이브러리 · JS 함수 · 레거시 JS 함수 · String 확장 |
| 기여·연동 | 이슈·PR · 코딩 규칙 · 라이선스 · IP 대역 · 시간대 · 포토스와이프 · 모바일 푸시 · 네모의 꿈 색상 |