Golang PHP 시간 관련 carbon 포팅한 Carbon 라이브러리 알아보기
오늘은 Golang으로 PHP의 날짜와 시간을 제어할 수 있는 Carbon을 포팅한 라이브러리를 알아보려 합니다.
Carbon 설치
우선 Golang의 환경을 구성하기 위해 https://golang.org/dl/ 에서 윈도우, 리눅스, 맥에서 설치 프로그램을 내려받을 수 있습니다.
맥에서 brew로 쉽게 설치할 수 있습니다.
brew install go
우분투에서도 apt로 쉽게 설치할 수 있습니다.
sudo apt-get install golang-go
go get으로 Carbon 패키지를 설치합니다.
go get github.com/uniplaces/carbon
홈의 go 폴더에 Carbon 소스코드와 패키지 파일이 생성됩니다.
예제
package main
해당 소스코드를 실행 파일로 인식하게 해주도록 main이라고 선언합니다.
import (
"fmt"
"time"
"github.com/uniplaces/carbon"
)
fmt와 time, 그리고 carbon을 가져옵니다.
func main() {
fmt.Println(carbon.Now().DateTimeString())
현재 시간을 반환할 수 있습니다.
today, _ := carbon.NowInLocation("Asia/Seoul")
fmt.Println(today)
서울 시간대로 현재 날짜를 반환합니다.
carbonTime := today.AddYear()
fmt.Println(carbonTime)
carbonTime = today.AddYears(1)
fmt.Println(carbonTime)
carbonTime = today.AddMonth()
fmt.Println(carbonTime)
carbonTime = today.AddMonths(1)
fmt.Println(carbonTime)
carbonTime = today.AddWeekday()
fmt.Println(carbonTime)
carbonTime = today.AddWeekdays(1)
fmt.Println(carbonTime)
carbonTime = today.AddHour()
fmt.Println(carbonTime)
carbonTime = today.AddMinute()
fmt.Println(carbonTime)
carbonTime = today.AddSecond()
fmt.Println(carbonTime)
Add 접두사가 붙으면 시간이나 날짜를 더해줍니다.
carbonTime = today.SubYear()
fmt.Println(carbonTime)
carbonTime = today.SubYears(1)
fmt.Println(carbonTime)
carbonTime = today.SubMonth()
fmt.Println(carbonTime)
carbonTime = today.SubMonths(1)
fmt.Println(carbonTime)
carbonTime = today.SubWeekday()
fmt.Println(carbonTime)
carbonTime = today.SubWeekdays(1)
fmt.Println(carbonTime)
carbonTime = today.SubHour()
fmt.Println(carbonTime)
carbonTime = today.SubMinute()
fmt.Println(carbonTime)
carbonTime = today.SubSecond()
fmt.Println(carbonTime)
Sub 접두사가 붙으면 시간이나 날짜를 뺍니다.
testDate, _ := carbon.CreateFromDate(2019, 8, 25, "Asia/Seoul")
서울의 시간대를 기준과 지정한 날짜로 Carbon 객체를 생성합니다.
fmt.Println(testDate.IsWeekday())
fmt.Println(testDate.IsWeekend())
fmt.Println(testDate.IsPast())
fmt.Println(testDate.IsFuture())
생성한 Carbon 객체로 주일인지 주말인지를 알 수 있고, 과거인지 미래인지도 알수 있습니다.
seoul, _ := carbon.CreateFromDate(2019, 8, 25, "Asia/Seoul")
london, _ := carbon.CreateFromDate(2019, 8, 25, "Europe/London")
fmt.Println(london.DiffInHours(seoul, true))
서로 두 객체의 시간 차이를 계산할 수도 있습니다.
parsed, _ := carbon.Parse(carbon.DateFormat, "2019-08-25", "Asia/Seoul")
fmt.Println(parsed)
문자열을 파싱하여 반환할 수 있습니다.
EndOfWeekTime, _ := carbon.Create(2019, 8, 25, 12, 0, 0, 0, "Asia/Seoul")
fmt.Println(EndOfWeekTime.EndOfWeek())
마지막 요일의 날짜를 반환하는 것처럼 반환하는 메소드들도 존재합니다.
nextWednesday, _ := carbon.Create(2019, 8, 25, 12, 0, 0, 0, "Asia/Seoul")
fmt.Println(nextWednesday.Next(time.Wednesday))
}
다음 요일이 언제인지도 알 수 있습니다.
Written on August 26, 2019