시간대
시간대를 처리합니다
시간대은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
시간대가 중요한 이유
같은 순간도 위치에 따라 다르게 보입니다. 시간대를 잘못 처리하면 몇 시간씩 어긋나는 버그가 발생하므로, 시간 값이 어떤 시간대를 사용하는지 명시해야 합니다.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.zone || t.utc_offset)
puts(t.utc_offset)UTC: 기준 시간대
UTC(협정 세계시)는 전 세계의 기준입니다. UTC로 저장하고 계산한 다음 표시할 때 변환합니다.
t = Time.utc(2026, 5, 30, 9, 0, 0)
puts(t.utc?)
puts(t.hour)현지 시간
Time.now와 Time.local은 컴퓨터의 현지 시간대를 사용합니다. UTC와의 오프셋은 utc_offset으로 초 단위로 제공됩니다.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.utc_offset)
puts(t.utc_offset / 3600)UTC로 변환하기
getutc(별칭 utc)는 동일한 순간을 UTC로 표현하여 반환합니다. 시계에 표시되는 시간은 바뀌지만 순간 자체는 동일합니다.
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.hour)
puts(t.getutc.hour)현지 오프셋으로 변환하기
getlocal은 명시적인 오프셋 문자열을 받아 해당 시간대의 순간을 반환합니다.
t = Time.utc(2026, 5, 30, 9, 0, 0)
istanbul = t.getlocal('+03:00')
puts(istanbul.hour)생성 시 오프셋 지정하기
생성 시 시간대를 고정하려면 오프셋 문자열을 Time.new의 마지막 인수로 전달합니다.
ny = Time.new(2026, 5, 30, 8, 0, 0, '-04:00')
puts(ny.utc_offset / 3600)
puts(ny.getutc.hour)같은 순간, 다른 시계
서로 다른 시간대의 두 시간 값이 정확히 같은 순간을 나타낼 수 있습니다. 비교는 내부의 순간을 사용하므로 두 값은 같습니다.
a = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
b = Time.new(2026, 5, 30, 9, 0, 0, '+00:00')
puts(a == b)ISO 8601의 오프셋
ISO 8601 타임스탬프에는 오프셋이 포함됩니다. 예를 들어 +03:00 또는 UTC를 나타내는 Z를 사용하므로 시스템 간에도 의미가 모호하지 않습니다.
require 'time'
t = Time.new(2026, 5, 30, 12, 0, 0, '+03:00')
puts(t.iso8601)
puts(t.getutc.iso8601)시간대가 포함된 문자열 분석하기
Time.parse는 입력 문자열에 있는 오프셋을 반영합니다.
require 'time'
t = Time.parse('2026-05-30T12:00:00+03:00')
puts(t.utc_offset / 3600)
puts(t.getutc.hour)권장 방법: UTC로 저장하기
가장 안전한 패턴은 다음과 같습니다: UTC로 저장하고, UTC에서 연산한 다음 표시할 때만 사용자의 시간대로 변환합니다. 이렇게 하면 모호함을 완전히 피할 수 있습니다.
stored = Time.utc(2026, 5, 30, 9, 0, 0)
display = stored.getlocal('+03:00')
puts("UTC #{stored.hour} -> Local #{display.hour}")DST 주의 사항
+03:00과 같은 고정 오프셋은 일광 절약 시간제를 반영하지 않습니다. DST 규칙이 있는 이름 지정 시간대에는 tzinfo 젬과 같은 라이브러리가 필요하며, 핵심 시간 클래스는 고정 오프셋만 알고 있습니다.
t = Time.new(2026, 7, 1, 12, 0, 0, '+02:00')
puts(t.utc_offset / 3600)빠른 확인
애플리케이션에서 시간대를 처리할 때 권장되는 전략은 무엇입니까?
복습: 시간대
이제 시간대를 올바르게 처리하는 방법을 배웠습니다:
- UTC는 전 세계의 기준입니다
getutc와getlocal은 순간을 변경하지 않고 변환합니다- 오프셋은 생성 시 또는 ISO 8601 문자열에서 설정합니다
- 서로 다른 시간대의 같은 순간은 비교할 때 같습니다
- UTC로 저장하고 현지 시간으로 표시합니다. 고정 오프셋은 DST를 반영하지 않습니다
require 'time'
puts(Time.utc(2026,5,30,9).getlocal('+03:00').hour)자주 묻는 질문
“시간대” 강의는 무료인가요?
네 — “시간대” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“시간대”에서 뭘 배우나요?
시간대를 처리합니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ruby Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“시간대” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.