Ruby Time

Ruby Time을 정리한다.

Posted by BELLSTONE on October 24, 2019 · 5 mins read

1. Ruby Time

  • Ruby의 Time 클래스는 Core, Standard로 두 가지가 존재합니다.

  • 자주 사용하는 것들을 정리해보려고 합니다.

2. Time 사용법

1
require 'time'
  • 상단에 require를 입력하여 time 모듈을 호출합니다.

1) 객체 생성

  • new는 현재시간을 Time 객체로 생성합니다.

  • year, month, day, hour, min, sec, wday, zone 등의 메서드를 이용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
Time.new # 2019-10-24 23:55:35 +0900

time = Time.new(2019, 10, 24, 23, 55, 35, "+09:00") # 2019-10-24 23:55:35 +0900

time.year # 2019
time.month # 10
time.day # 24
time.hour # 23
time.min # 55
time.sec # 35
time.wday # 4
time.zone # KST
  • local은 특정시간을 Time 객체로 생성합니다.

  • Time.local(year, month(1), day(1), hour(0), min(0), sec(0))의 형식입니다.

1
Time.local(2019, 10, 24, 23, 57, 15, 0); # 2019-10-24 23:57:15 +0900
  • parse는 문자열을 Time 객체로 생성합니다.

  • strptimeparse와 비슷하지만, 포맷을 설정할 수 있습니다.

1
2
3
4
5
6
7
8
9
Time.parse("2019/10/24 23") # 2019-10-24 23:00:00 +0900
Time.parse("2019/10/24 23:55") # 2019-10-24 23:55:00 +0900
Time.parse("2019/10/24 23:55:35") # 2019-10-24 23:55:35 +0900
Time.parse("2019-10-24 23:55:35") # 2019-10-24 23:55:35 +0900
Time.parse("20191024 235535") # 2019-10-24 23:55:35 +0900
Time.parse("20191024235535") # 2019-10-24 23:55:35 +0900
Time.parse("2019/10-24 23:55:35") # 2019-10-24 23:55:35 +0900

Time.strptime("2019-10-24", "%Y-%m-%d") # 2019-10-24 00:00:00 +0900
  • to_i를 이용하여, UNIX Epoch를 구할 수 있으며, at을 이용하여 UNIX Epoch를 변환할 수 있습니다.
1
2
3
time = Time.new # 2019-10-24 23:55:35 +0900
time.to_i # 1571928935
Time.at(1571928935) # 2019-10-24 23:55:35 +0900

2) 요일 확인

  • 아래의 메서드를 입력하여 요일을 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
time = Time.new

time.sunday? # false
time.monday? # false
time.tuesday? # false
time.wednesday? # false
time.thursday? # true
time.friday? # false
time.saturday # false

3) 날짜 계산

  • 초를 이용하여 날짜 계산을 할 수 있습니다.
1
2
3
4
5
6
7
8
today = Time.new(2019, 10, 24, 23, 55, 35, "+09:00")
tomorrow = today + (60*60*24) # 2019-10-25 23:55:35 +0900

today == tomorrow # false
today == today # true
tomorrow < today # false
tomorrow > today # true
Time.new(2019, 10, 25, 12, 0, 0).between?(today, tomorrow) # true

4) httpdate(date)

  • RFC 2616에서 정의된 HTTP-date 형식을 Time 객체로 변환합니다.
1
Time.httpdate("Thu, 24 Oct 2019 23:51:50 GMT") # 2019-10-24 23:51:50 UTC
  • 그럼 끝!

참고