수색…
소개
통사론
- time.Date (2016, 12 월, 31, 23, 59, 59, 999, time.UTC) // 초기화
- date1 == date2 // 2가 같은 순간에
true
반환true
- date1! = date2 // 2가 다른 순간 일 때
true
반환true
- date1.Before (date2) // 첫 번째가 엄격하게 두 번째 앞에있을 때
true
반환true
- date1.After (date2) // 첫 번째가 두 번째보다 엄격한 경우
true
반환true
Return time.Time Zero 함수에 오류가있을 때의 값입니다.
const timeFormat = "15 Monday January 2006" func ParseDate(s string) (time.Time, error) { t, err := time.Parse(timeFormat, s) if err != nil { // time.Time{} returns January 1, year 1, 00:00:00.000000000 UTC // which according to the source code is the zero value for time.Time // https://golang.org/src/time/time.go#L23 return time.Time{}, err } return t, nil }
시간 분석
날짜가 문자열로 저장되어있는 경우 파싱해야합니다. 사용 time.Parse
.
// time.Parse( format , date to parse)
date, err := time.Parse("01/02/2006", "04/08/2017")
if err != nil {
panic(err)
}
fmt.Println(date)
// Prints 2017-04-08 00:00:00 +0000 UTC
첫 번째 매개 변수는 문자열에 날짜를 저장하는 레이아웃이고 두 번째 매개 변수는 날짜가 들어있는 문자열입니다. 01/02/2006
은 MM/DD/YYYY
형식으로 말하는 것과 동일합니다.
레이아웃은 Mon Jan 2 15:04:05 -0700 MST 2006
정의 된 참조 시간이 값인 경우 해석되는 방식을 보여줌으로써 형식을 정의합니다. 그것은 입력 형식의 예제로 사용됩니다. 그러면 입력 문자열에 대해 동일한 해석이 수행됩니다.
시간 패키지에 정의 된 상수를 보면 레이아웃 문자열 작성 방법을 알 수 있지만 상수는 내보낼 수 없으며 시간 패키지 외부에서는 사용할 수 없습니다.
const (
stdLongMonth // "January"
stdMonth // "Jan"
stdNumMonth // "1"
stdZeroMonth // "01"
stdLongWeekDay // "Monday"
stdWeekDay // "Mon"
stdDay // "2"
stdUnderDay // "_2"
stdZeroDay // "02"
stdHour // "15"
stdHour12 // "3"
stdZeroHour12 // "03"
stdMinute // "4"
stdZeroMinute // "04"
stdSecond // "5"
stdZeroSecond // "05"
stdLongYear // "2006"
stdYear // "06"
stdPM // "PM"
stdpm // "pm"
stdTZ // "MST"
stdISO8601TZ // "Z0700" // prints Z for UTC
stdISO8601SecondsTZ // "Z070000"
stdISO8601ShortTZ // "Z07"
stdISO8601ColonTZ // "Z07:00" // prints Z for UTC
stdISO8601ColonSecondsTZ // "Z07:00:00"
stdNumTZ // "-0700" // always numeric
stdNumSecondsTz // "-070000"
stdNumShortTZ // "-07" // always numeric
stdNumColonTZ // "-07:00" // always numeric
stdNumColonSecondsTZ // "-07:00:00"
)
시간 비교
때로는 2 개의 날짜 객체, 동일한 날짜에 해당하는 객체 또는 다른 날짜 이후의 날짜를 찾아야합니다.
Go 에는 날짜를 비교하는 4 가지 방법이 있습니다.
-
date1 == date2
, 2가 같은 순간true
반환true
-
date1 != date2
, 2가 다른 순간 일 때true
반환true
-
date1.Before(date2)
는 첫 번째가 두 번째보다 엄격하게 앞선 경우true
반환true
-
date1.After(date2)
는 첫 번째가 두 번째보다 엄격히 뒤에있는 경우true
반환true
경고 : 비교할 2 시간이 동일하거나 정확히 동일한 날짜에 해당하면
After
및Before
함수는false
를 반환합니다. 날짜는 그 전후의 날짜가 아니기 때문입니다
date1 == date1
,true
반환true
date1 != date1
,false
반환합니다.date1.After(date1)
,false
반환합니다.date1.Before(date1)
,false
반환합니다.
팁 : 다른 날짜와 같거나 이전 날짜가 맞는지 알아야하는 경우 4 개의 연산자를 결합해야합니다.
date1 == date2 && date1.After(date2)
, date1이 date2보다 작거나 같으면true
반환true
또는 사용! (date1.Before(date2))
date1 == date2 && date1.Before(date2)
, date1이 date2보다 크거나 같거나!(date1.After(date2))
사용하면true
반환true
!(date1.After(date2))
사용법을 보여주는 몇 가지 예 :
// Init 2 dates for example
var date1 = time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
var date2 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
var date3 = time.Date(2017, time.July, 25, 16, 22, 42, 123, time.UTC)
bool1 := date1.Before(date2) // true, because date1 is before date2
bool2 := date1.After(date2) // false, because date1 is not after date2
bool3 := date2.Before(date1) // false, because date2 is not before date1
bool4 := date2.After(date1) // true, because date2 is after date1
bool5 := date1 == date2 // false, not the same moment
bool6 := date1 == date3 // true, different objects but representing the exact same time
bool7 := date1 != date2 // true, different moments
bool8 := date1 != date3 // false, not different moments
bool9 := date1.After(date3) // false, because date1 is not after date3 (that are the same)
bool10:= date1.Before(date3) // false, because date1 is not before date3 (that are the same)
bool11 := !(date1.Before(date3)) // true, because date1 is not before date3
bool12 := !(date1.After(date3)) // true, because date1 is not after date3
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow