Konwertuj znacznik czasu jako ciąg [duplikat]

Dec 07 2020

Chcę uzyskać znacznik czasu jako ciąg. Jeśli używam stringkonwersji, nie ma błędu, ale dane wyjściowe nie są czytelne. Później chcę, abyśmy to byli częścią nazwy pliku. Wygląda jak znak zapytania np. Znalazłem kilka takich przykładów:https://play.golang.org/p/bq2h3h0YKpnie rozwiązuje całkowicie mojego problemu. dzięki

now := time.Now()      // current local time
sec := now.Unix()      // number of seconds since January 1, 1970 UTC
fmt.Println(string(sec))

Jak mogę uzyskać znacznik czasu jako ciąg?

Odpowiedzi

2 Gealber Dec 07 2020 at 05:52

Coś takiego działa na mnie

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    now := time.Now()
    unix := now.Unix()
    fmt.Println(strconv.FormatInt(unix, 10))
}
1 Jens Dec 07 2020 at 05:51

Oto dwa przykłady tego, jak można przekonwertować uniksowy znacznik czasu na ciąg.

Pierwszy przykład ( s1) używa strconvpakietu i jego funkcji FormatInt. Drugi przykład ( s2) używa fmtpakietu ( dokumentacji ) i jego funkcji Sprintf.

Osobiście Sprintfbardziej podoba mi się ta opcja z estetycznego punktu widzenia. Nie sprawdziłem jeszcze wydajności.

package main

import "fmt"
import "time"
import "strconv"

func main() {
    t := time.Now().Unix() // t is of type int64
    
    // use strconv and FormatInt with base 10 to convert the int64 to string
    s1 := strconv.FormatInt(t, 10)
    fmt.Println(s1)
    
    // Use Sprintf to create a string with format:
    s2 := fmt.Sprintf("%d", t)
    fmt.Println(s2)
}

Plac zabaw Golang: https://play.golang.org/p/jk_xHYK_5Vu