2016-04-03 25 views
1

我正在學習如何在Go中編寫代碼並嘗試創建簡單的提醒功能。轉:爲什麼time.Now()。Hour/Minute/Second返回六位數字?

我想將當前時間顯示爲常規24小時制XX.XX(小時,分鐘)。

我已將當前時間保存在變量t中,當我打印它時,我發現時間是2009年11月初的23.00。很好,但是當我打印t.Hour和t.Minute時,結果爲132288.132480

這是類似的,當我打印t.Seconds。我一直無法弄清楚爲什麼會發生這種情況。

大約2000天過去了,但只有48小時2880k分鐘,因此我的結果中小時和分鐘之間的小差異表明這個問題是其他問題。

我正在運行在操場上的代碼。

我的代碼:

package main 

import (
    "fmt" 
    "time" 
    ) 

func main() { 
    Remind("It's time to eat") 
} 


func Remind(text string) { 
    t := time.Now() 
    fmt.Println(t) 
    fmt.Printf("The time is %d.%d: ", t.Hour, t.Minute) 
    fmt.Printf(text) 
    fmt.Println() 
} 
+4

「小時」和「分鐘」是功能;你需要評估它們:'fmt.Printf(「時間是%d。%d:」,t.Hour(),t.Minute())'。 –

+0

哦,我的天哪,那簡單明瞭。謝謝! 那你知道什麼時候會回來嗎?爲什麼它和t.Minute和t.Second很相似? – Victoria

+1

t.Hour和t.Minutes是對函數的引用,而不是函數的結果。您可以將它們視爲存儲這些功能的內存中的地址。 – EricSchaefer

回答

4

你需要調用t.Hour()而不是使用它作爲價值。

退房這裏time包的源:https://golang.org/src/time/time.go?s=12994:13018#L390

399 // Hour returns the hour within the day specified by t, in the range [0, 23]. 
    400 func (t Time) Hour() int { 
    401  return int(t.abs()%secondsPerDay)/secondsPerHour 
    402 } 
    403 

如有疑問,您可以快速找到通過官方go packages page閱讀特定的包源的解釋。

+0

那麼,我已經閱讀了時間包頁面,但我沒有意識到我沒有以正確的方式作爲函數調用小時。你知道'小時'會返回嗎? – Victoria

+1

@Victoria指向「小時」功能的指針https://play.golang.org/p/xAouiV8oES –

相關問題