Post

Golang 시간 툴킷 Now 라이브러리 알아보기

Golang 시간 툴킷 Now 라이브러리 알아보기

오늘은 Golang으로 날짜 문자열을 파싱하거나 날짜를 계산하는 시간 툴킷인 Now 라이브러리를 알아보려 합니다.

Now 설치

우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.

맥에서 brew로 쉽게 설치할 수 있습니다.

1
brew install go

우분투에서도 apt로 쉽게 설치할 수 있습니다.

1
sudo apt-get install golang-go

go get으로 Now 패키지를 설치합니다.

1
go get -u github.com/jinzhu/now

홈의 go 폴더에 Now 소스코드와 패키지 파일이 생성됩니다.

예제

1
package main

해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.

1
2
3
4
5
6
import (
	"fmt"
	"time"

	"github.com/jinzhu/now"
)

fmt, time 그리고 now를 가져옵니다.

1
2
3
func main() {
	timeNow := time.Now()
	fmt.Println(timeNow)

현재 시간을 반환할 수 있습니다.

1
2
	timeNow = now.New(time.Date(2000, 1, 1, 00, 00, 00, 0, time.Now().Location())).Local()
	fmt.Println(timeNow)

원하는 시간을 time.Time 타입으로 지정하고 반환할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	timeNow = now.BeginningOfMinute()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfHour()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfDay()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfWeek()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfMonth()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfQuarter()
	fmt.Println(timeNow)
	timeNow = now.BeginningOfYear()
	fmt.Println(timeNow)

	timeNow = now.EndOfMinute()
	fmt.Println(timeNow)
	timeNow = now.EndOfHour()
	fmt.Println(timeNow)
	timeNow = now.EndOfDay()
	fmt.Println(timeNow)
	timeNow = now.EndOfWeek()
	fmt.Println(timeNow)
	timeNow = now.EndOfMonth()
	fmt.Println(timeNow)
	timeNow = now.EndOfQuarter()
	fmt.Println(timeNow)
	timeNow = now.EndOfYear()
	fmt.Println(timeNow)

미리 만들어둔 Now 객체로 위와 같은 메소드를 사용할 수 있습니다.

지정한 시간을 바탕으로 특정 조건의 시작점과 끝점을 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
	timeParser, err := now.Parse("2019")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)
	timeParser, err = now.Parse("2019-08")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)
	timeParser, err = now.Parse("2019-08-27")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)
	timeParser, err = now.Parse("2019-08-27 12:00")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)
	timeParser, err = now.Parse("2019-08-27 12:00:00")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)
	timeParser, err = now.Parse("12:00")
	if err != nil {
		panic(err)
	}
	fmt.Println(timeParser)

문자열에서 시간을 파싱할 수 있습니다.

기입되지 않은 부분을 현재 시간으로 채울 수 있습니다.

만약 파싱할 수 없으면 오류를 err 변수로 반환합니다.

1
2
3
4
5
	timeParser = now.MustParse("08-27")
	fmt.Println(timeParser)
	timeParser = now.MustParse("2019-08-27")
	fmt.Println(timeParser)
}

MustParse는 똑같이 파싱하지만, 파싱할 수 없는 상황에서 패닉을 일으킵니다.

This post is licensed under CC BY 4.0 by the author.