Konwertuj znacznik czasu jako ciąg [duplikat]
Chcę uzyskać znacznik czasu jako ciąg. Jeśli używam string
konwersji, 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
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))
}
Oto dwa przykłady tego, jak można przekonwertować uniksowy znacznik czasu na ciąg.
Pierwszy przykład ( s1
) używa strconv
pakietu i jego funkcji FormatInt
. Drugi przykład ( s2
) używa fmt
pakietu ( dokumentacji ) i jego funkcji Sprintf
.
Osobiście Sprintf
bardziej 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