Ich habe einen Code in Go geschrieben, den ich aktualisieren möchte, um mit den neuesten wöchentlichen Builds zu arbeiten. (Es wurde zuletzt unter r60 gebaut). Bis auf das folgende Bit funktioniert jetzt alles:
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
Irgendwelche Ratschläge, wie Sie dies aktualisieren können, um mit der aktuellen Go-Implementierung zu arbeiten?
Unix()
Rückgabewert ist vom Typint64
. Das Abschneiden des Typwertsint64
auf Typint32
ist ein Beispiel für das Problem des Jahres 2038 .Wenn Sie es möchten,
string
konvertieren Sie es einfach überstrconv
:package main import ( "fmt" "strconv" "time" ) func main() { timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10) fmt.Println(timestamp) // prints: 1436773875771421417 }
quelle
Ein weiterer Tipp.
time.Now().UnixNano()
(godoc) gibt Ihnen Nanosekunden seit der Epoche. Es ist keine reine Unix-Zeit, aber es gibt Ihnen Präzision von weniger als einer Sekunde in derselben Epoche, was praktisch sein kann.Bearbeiten: Geändert, um der aktuellen Golang-API zu entsprechen
quelle
time.Now().UnixNano()
( Referenz ).Aufbauend auf der Idee einer anderen Antwort hier, um eine für Menschen lesbare Interpretation zu erhalten, können Sie Folgendes verwenden:
package main import ( "fmt" "time" ) func main() { timestamp := time.Unix(time.Now().Unix(), 0) fmt.Printf("%v", timestamp) // prints: 2009-11-10 23:00:00 +0000 UTC }
Probieren Sie es auf dem Go-Spielplatz aus .
quelle