2016-04-03 3 views
1

私はGoでコードを作成し、簡単なリマインダー機能を作成する方法を学んでいます。Go:なぜtime.Now()は時間/分/秒で6桁の数字を返しますか?

現在の時刻を通常の24時間表示のXX.XX(時、分)として表示したいとします。

私は現在の時刻を変数tに保存しました。印刷すると、2009年11月初めの23時です。罰金ですが、t.Hourとt.Minuteを印刷すると結果は132288.132480になります。

t.Secondsを印刷すると似たようなものです。私はなぜこれが起こるか把握できませんでした。

私の結果の時間と分のわずかな違いは、問題が他のものであることを示唆しているので、およそ2000時間が経過してから48時間と2880分です。

私はgo playgroundでコードを実行しています。

マイコード:

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

'Hour'と' Minute'は関数です。 'fmt.Printf("時間は%d。%d: "、t.Hour()、t.Minute())'です。 –

+0

ああ私のことわざ、それはシンプルで明白だった。ありがとう! あなたは実際に何を返しますか?それはなぜt.Minuteとtにとても似ているのですか? – Victoria

+1

t.Hourとt.Minutesは関数の参照ではなく、関数の結果ではありません。これらの機能が格納されているメモリ内のアドレスと考えることができます。 – EricSchaefer

答えて

4

あなたは値としてそれを使用するのではなく、t.Hour()を呼び出す必要があります。疑いで、あなたはすぐに公式go packages pageから特定のパッケージソースを読むことで説明を見つけることができます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 

はここtimeパッケージのソースをチェックしてください。

+0

さて、私は時間パッケージのページを読んでいましたが、私は関数として正しい方法で時間を呼び出すのではないことに気づいていませんでした。 't.Hour'が何を返すのか知っていますか? – Victoria

+1

@Victoria 'Hour'関数へのポインタhttps://play.golang.org/p/xAouiV8oES –

関連する問題