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

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

Now 설치

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

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

brew install go

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

sudo apt-get install golang-go

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

go get -u github.com/jinzhu/now

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

예제

package main

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

import (
	"fmt"
	"time"

	"github.com/jinzhu/now"
)

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

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

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

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

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

	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 객체로 위와 같은 메소드를 사용할 수 있습니다.

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

	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 변수로 반환합니다.

	timeParser = now.MustParse("08-27")
	fmt.Println(timeParser)
	timeParser = now.MustParse("2019-08-27")
	fmt.Println(timeParser)
}

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

Written on August 28, 2019