2016-04-12 19 views
1

https://golang.org/pkg/time/#Unixgolang time.Now() Unix() belgeleme ve uygulama arasındaki tutarsızlık?

bir Time nesnesi döndüren, bu işlevin imza

func Unix(sec int64, nsec int64) Time 

anlamı olduğunu belirtmektedir.

Ancak aşağıdaki programı hata mesajı ile iptal:

14: assignment`

func main() { 
    var now time.Time 
    now = time.Now() 
    fmt.Println(now) 

    var secs time.Time 
    secs = now.Unix() 
    fmt.Println(secs) 
} 

tip time.Time olarak now.Unix() (tip Int64) kullanamaz Programın aşağıdaki sürümü, çıktı

2016-04-12 18:20:22.566965512 -0400 EDT

1460499622

belgelerinde hata bu sadece bir an meselesi midir?

cevap

4

Dokümanlar doğru, Unix'un yanlış sürümüne bakıyorsunuz. Kullandığınız yöntem budur; https://golang.org/pkg/time/#Time.Unix hiçbir argüman almaz, bir zaman nesnesi üzerinde çağrılır ve unix zamanını int64 olarak döndürür. Referans verdiğiniz sürüm hem int64, hem saniye hem de nanosaniye olarak iki argüman alıyor? unix biçiminde bir zamanı temsil eden (nseconds'ın ne anlama geldiği pozitif değil) ve ikinci örneğinizi uzatmak için time.Time

döndürür; bir başka hat secs türünü yazdırmak için eklenen

func main() { 
    var now time.Time 
    now = time.Now() 
    fmt.Println(now) 

    // var secs time.Time 
    secs := now.Unix() 
    fmt.Println(secs) 
    t := time.Unix(secs, 0) // get a time from the seconds value which is a unix time 
    fmt.Println(t) 
} 

İşte oyundaki hemen üstünde. https://play.golang.org/p/KksPPbQ1Jy

+1

'nsec'' time.Unix' işlevi nanosaniyedir. Zaman damgasını saniye cinsinden, nanosaniye cinsinden veya bunların bir kombinasyonunu belirtebilirsiniz. – JimB

+0

Açıklama için teşekkürler! Bu işlevler bir anlamda birbirinin tersidir. saniye <--> Zaman nesnesi dönüştürücüler. –