English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 날짜 & 시간 (Date & Time)

Time Ruby에서 날짜와 시간을 표현하는 클래스입니다. 이 클래스는 운영체제가 제공하는 시스템 날짜와 시간을 기반으로 합니다. 이 클래스는 표현할 수 없을 수도 있습니다 1970년 전 또는 2038 년이 지나고 날짜

이 튜토리얼은 날짜와 시간의 모든 중요한 개념을 이해하도록 도와줍니다.

현재 날짜와 시간을 생성합니다

현재 날짜와 시간을 얻는 간단한 예제입니다:

온라인 예제

#!/usr/bin/ruby -w
# -*- encoding: UTF-8 -*-
 
time1 = Time.new
 
puts "현재 시간 : " + time1.inspect
 
#Time.now과 동일
time2 = Time.now
puts "현재 시간 : " + time2.inspect

위 예제의 실행 결과는 다음과 같습니다:

현재 시간: 2015-09-17 15:23:14 +0800
현재 시간: 2015-09-17 15:23:14 +0800

Date & Time 구성 요소를 얻는 방법

다음은 Time 객체를 사용하여 다양한 날짜와 시간 구성 요소를 얻을 수 있습니다. 다음 예제를 참조하세요:

온라인 예제

#!/usr/bin/ruby -w
# -*- encoding: UTF-8 -*-
 
time = Time.new
 
#Time의 구성 요소
puts "현재 시간 : " + time.inspect
puts time.year    # => 날짜의 연도
puts time.month   # => 날짜의 월(1 부터 12)
puts time.day     # => 월 중의 날짜(1 부터 31)
puts time.wday    # => 일주일 중의 요일(0은 일요일)
puts time.yday    # => 365:년도 중의 날짜
puts time.hour    # => 23:24 오전/오후 시간
puts time.min     # => 59
puts time.sec     # => 59
puts time.usec    # => 999999:마이크로초
puts time.zone    # => "UTC": 시간대 이름

위 예제의 실행 결과는 다음과 같습니다:

현재 시간: 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utcTime.gmTime.local 함수

이 함수들은 다음과 같은 표준 형식의 날짜를 포맷하는 데 사용될 수 있습니다:

#7월 8, 2008
Time.local(2008, 7, 8)  
#7월 8, 2008, 09:10am, 로컬 시간
Time.local(2008, 7, 8, 9, 10)   
#7월 8, 2008, 09:10 UTC
Time.utc(2008, 7, 8, 9, 10)  
#7월 8, 2008, 09:10:11 GMT(UTC와 동일)
Time.gm(2008, 7, 8, 9, 10, 11)

다음 예제는 배열에서 모든 구성 요소를 얻습니다:

[sec,min,hour,day,month,year,wday,yday,isdst,zone]

다음 예제를 시도해 보세요:

온라인 예제

#!/usr/bin/ruby -w
 
time = Time.new
 
values = time.to_a
p values

위 예제의 실행 결과는 다음과 같습니다:

[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]

이 배열은 전달될 수 있습니다 Time.utc 또는 Time.local 다음은 날짜의 다른 형식을 얻는 함수 예제입니다:

온라인 예제

#!/usr/bin/ruby -w
 
time = Time.new
 
values = time.to_a
puts Time.utc(*values)

위 예제의 실행 결과는 다음과 같습니다:

2015-09-17 15:26:09 UTC

다음은 시간을 얻는 방법입니다. 원시 시간부터의 초 수(플랫폼 관련):

#원시 시간부터의 초 수를 반환합니다
time = Time.now.to_i  
 
#초 수를 Time 객체로 변환합니다
Time.at(time)
 
#반환되는 값은 원시 시간부터의 초 수이며 마이크로초를 포함합니다
time = Time.now.to_f

시간대와 여름 시간

다음과 같이 사용할 수 있습니다. Time 객체를 사용하여 시간대와 여름 시간에 대한 모든 정보를 얻을 수 있습니다. 예를 들어:

time = Time.new
 
# 이곳은 설명
time.zone       # => "UTC": 시간대를 반환
time.utc_offset # => 0: UTC는 UTC에 대한 0초의 변위
time.zone       # => "PST"(또는 다른 시간대)
time.isdst      # => false: UTC가 DST(여름 시간) 없음
time.utc?       # => true: UTC 시간대에서
time.localtime  # 로컬 시간대로 변환
time.gmtime     # UTC로 변환
time.getlocal   # 로컬에서 새로운 Time 객체를 반환
time.getutc     # UTC에서 새로운 Time 객체를 반환

날짜와 시간 포맷화

데이터와 시간을 포맷화하는 여러 가지 방법이 있습니다. 아래 예제는 그 중 일부를 보여줍니다:

온라인 예제

#!/usr/bin/ruby -w
time = Time.new
 
puts time.to_s
puts time.ctime
puts time.localtime
puts time.strftime("%Y-%m-%d %H:%M:%S")

위 예제의 실행 결과는 다음과 같습니다:

2015-09-17 15:26:42 +0800
Thu Sep 17 15:26:42 2015
2015-09-17 15:26:42 +0800
2015-09-17 15:26:42

시간 포맷 명령

아래 표에 나열된 명령과 메서드 Time.strftime 함께 사용됩니다.

명령설명
%a요일 이름의 약자(예: Sun).
%A요일 이름의 전체 이름(예: Sunday).
%b월 이름의 약자(예: Jan).
%B월 이름의 전체 이름(예: January).
%c선호하는 로컬 날짜와 시간 표기법.
%d달 중 몇 일이지요(01 부터 31)。
%H하루 중 몇 시간이지요24 시간 체제(00에서 23)。
%I하루 중 몇 시간이지요12 시간 체제(01 부터 12)。
%j년 중 몇 일이지요(001 부터 366)。
%m년 중 몇 월이지요(01 부터 12)。
%M시간 중 몇 분이지요(00에서 59)。
%p예상선 지시(AM 또는 PM).
%S분 중 몇 번째 초가지요(00 또는 60까지)
%U해당 연의 주 수, 첫 번째 일요일(첫 번째 주의 첫 번째 날로)에서 시작(00에서 53)。
%W해당 연의 주 수, 첫 번째 월요일(첫 번째 주의 첫 번째 날로)에서 시작(00에서 53)。
%w일주일 중 몇 번째 날이지요(일요일은 0, 0에서 6)。
%x시간만 있는 우선 표시법.
%X날짜만 있는 우선 표시법.
%y세기가 포함되지 않은 연도 표시(00에서 99)。
%Y세기가 포함된 연도.
%Z시간대 이름.
%%% 문자.

시간 알고리즘

시간을 사용하여 간단한 수학을 할 수 있습니다. 예를 들어:

now = Time.now           # 현재 시간
puts now
 
past = now - 10          # 10 초 전. Time - number => Time
puts past
 
future = now + 10        # 현재부터 10 초 후. Time + number => Time
puts future
 
diff = future - now      # => 10  Time - Time => 초수
puts diff

위 예제의 실행 결과는 다음과 같습니다:

2015-09-17 15:27:08 +0800
2015-09-17 15:26:58 +0800
2015-09-17 15:27:18 +0800
10.0