Suche…


Einführung

Das Go- time Paket bietet Funktionen zum Messen und Anzeigen von Zeit.

Dieses Paket enthält eine Struktur time.Time , die das Speichern und Berechnen von Datums- und Zeitangaben ermöglicht.

Syntax

  • time.Date (2016, time.Dezember 31, 23, 59, 59, 999, time.UTC) // initialisieren
  • date1 == date2 // gibt true zurück true wenn die 2 den gleichen Moment haben
  • date1! = date2 // gibt true zurück true wenn die 2 unterschiedliche Momente sind
  • date1.Before (date2) // gibt true zurück true wenn das erste streng vor dem zweiten ist
  • date1.Nach (date2) // gibt true zurück true wenn der erste streng nach dem zweiten ist

Return time.Time Zero Wert, wenn die Funktion einen Fehler aufweist

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
}

Zeitanalyse

Wenn Sie ein Datum als Zeichenfolge gespeichert haben, müssen Sie es analysieren. Verwenden Sie 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

Der erste Parameter ist das Layout, in dem die Zeichenfolge das Datum speichert, und der zweite Parameter ist die Zeichenfolge, die das Datum enthält. 01/02/2006 ist das gleiche als zu sagen, dass das Format MM/DD/YYYY .

Das Layout definiert das Format, indem es zeigt, wie die Referenzzeit ( Mon Jan 2 15:04:05 -0700 MST 2006 interpretiert würde, wenn dies der Wert wäre. Es dient als Beispiel für das Eingabeformat. Die gleiche Interpretation wird dann für die Eingabezeichenfolge vorgenommen.

Sie können die im Zeitpaket definierten Konstanten sehen, um zu wissen, wie die Layoutzeichenfolge geschrieben wird. Beachten Sie jedoch, dass die Konstanten nicht exportiert werden und nicht außerhalb des Zeitpakets verwendet werden können.

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"
)

Zeit vergleichen

Manchmal müssen Sie mit 2 Datumsobjekten wissen, ob es sich um dasselbe Datum handelt oder welches Datum hinter dem anderen liegt.

In Go gibt es vier Möglichkeiten, Daten zu vergleichen:

  • date1 == date2 gibt true zurück true wenn die 2 den gleichen Moment haben
  • date1 != date2 , gibt true zurück true wenn die 2 unterschiedliche Momente sind
  • date1.Before(date2) gibt true zurück true wenn das erste streng vor dem zweiten ist
  • date1.After(date2) gibt true zurück true wenn der erste streng nach dem zweiten ist

WARNUNG: Wenn die 2 Zeit zum Vergleichen gleich sind (oder dem gleichen Datum entsprechen), werden die Funktionen After und Before als false , da ein Datum weder vor noch hinter sich liegt

  • date1 == date1 gibt true
  • date1 != date1 , gibt false
  • date1.After(date1) gibt false
  • date1.Before(date1) gibt false

TIPPS: Wenn Sie wissen müssen, ob ein Datum vor oder einem anderen Datum liegt, müssen Sie nur die 4 Operatoren kombinieren

  • date1 == date2 && date1.After(date2) wird true wenn Datum1 nach oder gleich Datum2 ist
    oder mit ! (date1.Before(date2))
  • date1 == date2 && date1.Before(date2) , gibt true zurück true wenn date1 vor oder gleich date2 oder mit !(date1.After(date2))

Einige Beispiele zur Verwendung:

// 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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow