수색…


소개

Go time 패키지는 time 을 측정하고 표시하는 기능을 제공합니다.

이 패키지는 구조 time.Time 제공하여 날짜와 시간에 계산을 저장하고 수행 할 수 있습니다.

통사론

  • 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/2006MM/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 시간이 동일하거나 정확히 동일한 날짜에 해당하면 AfterBefore 함수는 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