Go에서 날짜 문자열을 구문 분석하는 방법

Suraj Joshi 2023년12월11일
  1. 진행중인 날짜 및 시간 표현
  2. Go에서 날짜 문자열 구문 분석
Go에서 날짜 문자열을 구문 분석하는 방법

날짜 구문 분석은 프로그래밍 세계에서 발생하는 가장 일반적인 작업 중 하나입니다. Go는 날짜 / 시간 문자열 표현의 일부를 나타내는 코드를 사용하는 다른 프로그래밍 언어와 달리 표준 날짜를 사용합니다. Go의 구문 분석은time 패키지의 Parse 및 Format 함수를 사용하여 수행됩니다.

진행중인 날짜 및 시간 표현

Go에서 날짜를 구문 분석하기 위해layout이라는 것을 사용합니다. Go에는 날짜를 구문 분석하는 동안 기억해야 할 표준 시간이 있습니다.

Mon Jan 2 15:04:05 MST 2006

2006 년 1 월 2 일 오후 3시 04 분 5 초 (UTC-0700)입니다.

Go에서 날짜 문자열 구문 분석

날짜 문자열을 구문 분석하기 위해이 레이아웃을time.Parse 함수에 전달합니다. 구문 분석 기능을 매우 흥미롭게 만드는 구문 분석 기능에서 문자를 사용하여 날짜를 지정하지 않고 실시간을 형식으로 사용합니다.

time.Parse함수는 시간 형식 자리 표시자를 첫 번째 인수로 구성하고 시간을 두 번째 인수로 나타내는 실제 형식 문자열로 구성된 레이아웃을 사용합니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    timeT, _ := time.Parse("2006-01-02", "2020-04-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("06-01-02", "20-04-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02", "2020-Apr-14")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05", "2020-Apr-14 Tuesday 23:19:25")
    fmt.Println(timeT)

    timeT, _ = time.Parse("2006-Jan-02 Monday 03:04:05 PM MST -07:00", "2020-Apr-14 Tuesday 11:19:25 PM IST +05:30")
    fmt.Println(timeT)
}

출력:

2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
2020-04-14 00:00:00 +0000 UTC
0001-01-01 00:00:00 +0000 UTC
2020-04-14 23:19:25 +0530 IST

Go는 package에 미리 정의 된 시간 레이아웃 상수가 있습니다.

일정한 나열한 것
ANSIC "Mon Jan _2 15:04:05 2006"
UnixDate "Mon Jan _2 15:04:05 MST 2006"
RubyDate "Mon Jan 02 15:04:05 -0700 2006"
RFC822 "02 Jan 06 15:04 MST"
RFC822Z "02 Jan 06 15:04 -0700"
RFC850 "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z "Mon, 02 Jan 2006 15:04:05 -0700"
RFC3339 "2006-01-02T15:04:05Z07:00"
RFC3339Nano "2006-01-02T15:04:05.999999999Z07:00"
Stamp "3:04PM"
StampMilli "Jan _2 15:04:05.000"
StampMicro "Jan _2 15:04:05.000000"
StampNano "Jan _2 15:04:05.000000000"

레이아웃 문자열 대신 위와 같이 미리 정의 된 상수를 사용하여 날짜-시간을 구문 분석 할 수 있습니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    timeT, _ := time.Parse(time.RFC3339, "2020-04-15T13:45:26Z")
    fmt.Println(timeT)
}

출력:

2020-04-15 13:45:26 +0000 UTC

우리가time.Time 타입을 가지고 있다면Format 함수를 사용하여 그것을string으로 변환합니다.

package main

import (
    "fmt"
    "time"
)

func main() {
    input := "2020-04-14"
    layout := "2006-01-02"
    t, _ := time.Parse(layout, input)
    fmt.Println(t)
    fmt.Println(t.Format("02-Jan-2006"))

}

출력:

2020-04-14 00:00:00 +0000 UTC
14-Apr-2020
작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Go String