Go에서 날짜 및 시간을 구문 분석하기 위한 실용 가이드
12991 단어 go
표준 형식이 아닌 날짜/시간을 사용하는 경우가 종종 있습니다. 여기에서 날짜 시간의 패턴을 식별한 다음 사용자 지정 레이아웃을 작성하려고 합니다.
표준 시간 패키지를 사용하여 이를 어떻게 달성할 수 있는지 살펴보겠습니다. time 패키지는 우리의 목적에 맞는 Parse 및 Format과 같은 기능을 포함하는 여러 기능을 제공합니다.
구문 분석
Parse parses a formatted string and returns the time value it represents.
func Parse(layout, value string) (Time, error)
package main
import (
"fmt"
"time"
)
func main() {
const longForm = "Jan 2, 2006 at 3:04pm (MST)"
t, _ := time.Parse(longForm, "Feb 3, 2013 at 7:54pm (PST)")
fmt.Println(t)
const shortForm = "2006-Jan-02"
t, _ = time.Parse(shortForm, "2013-Feb-03")
fmt.Println(t)
}
Output:
2013-02-03 19:54:00 +0000 PST
2013-02-03 00:00:00 +0000 UTC
플레이그라운드 링크로 이동: Parse Example
체재
Format returns a textual representation of the time value formatted according to the layout defined by the argument.
func (t Time) Format(layout string) string
func main() {
t, err := time.Parse(time.UnixDate, "Wed Feb 25 11:06:39 PST 2015")
if err != nil { // Always check errors even if they should not happen.
panic(err)
}
fmt.Println("default format:", t)
fmt.Println("Unix format:", t.Format(time.UnixDate))
}
Output:
default format: 2015-02-25 11:06:39 +0000 PST
Unix format: Wed Feb 25 11:06:39 PST 2015
플레이그라운드 링크로 이동: Format Example
시간 패키지에서 사용 가능한 사전 정의된 레이아웃
상표
정의
형세
01/02 03:04:05PM '06 -0700
앤식
2006년 1월 2일 월요일 15:04:05
UnixDate
2006년 1월 2일 월요일 15:04:05 MST
RubyDate
2006년 1월 2일 월요일 15:04:05 -0700
RFC822
2006년 1월 2일 15:04 MST
RFC822Z
06년 1월 2일 15:04 -0700
RFC850
2006년 1월 2일 월요일 15:04:05 MST
RFC1123
2006년 1월 2일 월요일 15:04:05 MST
RFC1123Z
2006년 1월 2일 월요일 15:04:05 -0700
RFC3339
2006-01-02T15:04:05Z07:00
RFC3339나노
2006-01-02T15:04:05.999999999Z07:00
주방
오후 3시 04분
우표
1월_2일 15:04:05
스탬프밀리
1월 _2 15:04:05.000
스탬프마이크로
1월 _2 15:04:05.000000
스탬프나노
1월 _2 15:04:05.000000000
나만의 레이아웃을 만들기 위한 빌딩 블록
유형
옵션
년도
"2006", "06"
월
"1월", "1월", "1", "01"
텍스트 요일
"월요일", "월요일"
월의 숫자 날짜
"2", "_2", "02"
올해의 숫자 일
"__2", "002"
시
"15", "3", "03"(오후 또는 오전)
분
"4", "04"
초
"5", "05"
오전/오후 마크
"오후"
두 자리 연도 06을 지정하는 레이아웃의 경우 값 NN >= 69는 19NN으로 처리되고 값 NN < 69는 20NN으로 처리됩니다.
숫자 시간대 오프셋 형식은 다음과 같습니다.
값
체재
"-0700"
±흠
"-07:00"
±hh:mm
"-07"
±hh
형식의 기호를 Z로 바꾸면 UTC 영역에 대한 오프셋 대신 Z를 인쇄하는 ISO 8601 동작이 트리거됩니다. 따라서:
값
체재
"Z0700"
Z 또는 ±hhmm
"Z07:00"
Z 또는 ±hh:mm
"Z07"
Z 또는 ±hh
최종 예
func main() {
ipTimes := []string{
"24 Aug 2021 7:20:50 PM",
"Aug 24 2021 07:20:50PM",
"24-08-2021 17:20:50",
"08-24-2021 13:12:32",
"24/8/21 9:00:12",
"8/24/2021 10:10:10",
"1993-11-23 7**12**44PM",
"24 October 97 7:12:45PM+05:30", // 24 th January 1997
}
layouts := []string{
"2 Jan 2006 3:04:05 PM",
"Jan 2 2006 03:04:05PM",
"2-01-2006 15:04:05",
"01-02-2006 15:4:5",
"2/1/06 3:4:5",
"1/2/2006 3:4:5",
"2006-01-02 3**4**5PM",
"2 January 06 3:4:5PMZ07:00",
}
for i := 0; i < len(ipTimes); i++ {
t, err := time.Parse(layouts[i], ipTimes[i]) // parsing to get time value
if err != nil { // check for errors
fmt.Println(err)
return
}
fmt.Println(" Input DateTime String: ", ipTimes[i])
fmt.Println(" Layout: ", layouts[i])
fmt.Println("Time value Default Format: ", t)
fmt.Println(" Time in RFC3339 Format: ", t.Format(time.RFC3339))
}
}
반복하기 위해 그러한 예를 하나 들어 보겠습니다.
입력: "97년 10월 24일 오후 7:12:45+05:30"
레이아웃: "2006년 1월 2일 3:4:5PMZ07:00"
위에 나열된 빌딩 블록에서 사물을 매핑할 수 있습니다.
레이아웃 키
실제 값
설명
2
24
월의 숫자 날짜
1월
십월
월
06
97
연도 (1997)
삼
7
시
4
12
분
5
45
초
Z07:00
+05:30
오프셋
PM이 지정되어 있으므로 7:12:45는 12시간 형식입니다.
지정된 레이아웃 블록을 사용하여 패턴을 쉽게 볼 수 있고 자체 레이아웃을 만들 수 있습니다.
재미있는 팁
golang playground의
time.Now()
가 같은 시간에 인쇄되는 이유(2009-11-10 23:00:00 +0000 UTC m=+0.000000001)가 궁금한 적이 있습니까?드럼 롤!!!!!!
고랭이의 생일날짜와 시간입니다.
새로운 것을 배웠거나 개념을 수정했으면 합니다.
내가 뭔가를 놓친 경우 알려주세요.
Complete Working Date Time Example
참조
Time Format
Time Parse
Constants
Reference
이 문제에 관하여(Go에서 날짜 및 시간을 구문 분석하기 위한 실용 가이드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rajkumargosavi/practical-guide-to-parsing-your-date-and-time-in-go-5blb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)