Golang 시작 : "시간"

이 글은 제가 Go 언어를 배운 경험을 담은 Begin Go 시리즈의 일부입니다. 어떤 피드백이라도 대단히 감사하겠습니다.

구문 분석 시간 문자열



exercism's go track 에서 실습을 완료하기 위해 시간string 을 구문 분석할 때 문제가 발생했습니다.7/13/2020 20:32:00 구문 분석을 시도했지만 빈 값0001-01-01 00:00:00 +0000 UTC으로 계속 시간이 걸립니다.

맞춤 레이아웃



Go 언어에서는 유형이 Layout 인 패턴 기반string으로 시간을 형식화하고 구문 분석합니다. gobyexample.com에서 기사를 읽을 수 있습니다.

이것은 위의 문자열을 구문 분석하는 데 사용한 코드입니다.

date := "7/13/2020 20:32:00"
t, _ := time.Parse("01/02/2006 15:04:05", date)
fmt.Print(t)
// 0001-01-01 00:00:00 +0000 UTC 


앞에 0이 있거나 없음



선행 0을 사용해서는 안 되는 날짜와 월을 구문 분석하기 위해 선행 0을 사용한 내 실수입니다. 코드를 다음과 같이 변경한 후 구문 분석에 성공했습니다.

t, _ := time.Parse("1/02/2006 15:04:05", date)


날짜, 월 등에 선행 0을 잘못 사용하면 잠재적인 버그가 발생할 수 있습니다. 따라서 시간을 포맷/파싱하기 위해 Layout에서 선행 0을 사용해야 하는지 여부를 항상 고려해야 합니다.

레이아웃 시간 표현 기억하기



Go는 다른 언어와 비교하여 시간 형식을 지정하기 위해 다른 시간 표현을 사용합니다. 다른 언어에서는 일반적으로 HH 또는 m와 같은 시간 표현을 사용하여 월 또는 시간을 나타냅니다.

이동 시간 표현은 다음과 같습니다.


대표
대표


1 또는 01

2 또는 02
데이트
15
04
05
2006년도
07:00시간 오프셋(시간대)


문제는 time를 사용할 때마다 해당 시간 표현을 검색해야 합니까? 아니면 그 기호를 기억하는 다른 방법이 있을까요?

위의 표를 보면 1개의 예외를 제외하고 잘 알려진 시간 형식과 일치하는 패턴을 볼 수 있습니다. 아래 코드 블록은 시간 표현을 기억하는 방법을 보여줍니다.

// Well known time format
"Jan 02 2016 15:04:05+07:00"
// Move back the year, right before time offset / time zone.
"Jan 02 15:04:05 2016 +07:00"
// Changing to number presentation, 
// will show a pattern of an incrementing numbers
"01 02 03:04:05 2016 +07:00"



참조


  • Time format and parsing on gobyexamples

  • 속성


  • Go Gopher 캐릭터는 Renee French에 의해 생성됩니다.
  • 좋은 웹페이지 즐겨찾기