0Pricing
Ruby Academy · 강의

시간대

시간대를 처리합니다

시간대은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 시간과 날짜 클래스
  2. 파싱과 형식 지정
  3. 시간 산술
  4. 시간대
← Ruby Academy(으)로 돌아가기