時間と継続時間
時点と時間間隔を表します
「時間と継続時間」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。
time パッケージ
Goのtimeパッケージは、時刻と時刻間の期間を表します。
time.Timeは特定の時点を表します。time.Durationは時間の長さを表します。
package main
import (
"fmt"
"time"
)
func main() {
var d time.Duration = 2 * time.Second
fmt.Println(d)
}現在時刻を取得する
time.Now()は現在の時点をtime.Timeとして返します。(正確な値はプログラムを実行した時刻によって異なります。)
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now.Year())
}特定の時刻を作成する
time.Dateは、年、月、日、時、分、秒、ナノ秒、ロケーションという各要素から、正確な時点を作成します。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
fmt.Println(t)
}時刻の構成要素を読み取る
time.Timeには、Year、Month、Day、Hour、Weekdayなどのメソッドがあります。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, time.May, 30, 0, 0, 0, 0, time.UTC)
fmt.Println(t.Month(), t.Day(), t.Weekday())
}Durationの定数
単位を表す定数に数値を掛けて、期間を作成します。使用できる定数にはtime.Hour、time.Minute、time.Second、time.Millisecondがあります。
package main
import (
"fmt"
"time"
)
func main() {
d := 1*time.Hour + 30*time.Minute
fmt.Println(d)
}Durationを変換する
Seconds()、Minutes()、Hours()などのメソッドは、期間をその単位のfloat64として返します。
package main
import (
"fmt"
"time"
)
func main() {
d := 90 * time.Minute
fmt.Println(d.Hours())
fmt.Println(d.Seconds())
}時刻を加算する
t.Add(d)は、期間の分だけ移動した新しい時刻を返します。time.Timeは値型なので、元の値は変更されません。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
later := t.Add(2 * time.Hour)
fmt.Println(later.Hour())
}暦の単位を加算する
t.AddDate(years, months, days)は、暦に基づく単位で時刻を移動し、月の日数やうるう年も正しく処理します。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, time.January, 31, 0, 0, 0, 0, time.UTC)
next := t.AddDate(0, 1, 0)
fmt.Println(next.Month(), next.Day())
}時刻間の差
t2.Sub(t1)は、2つの時刻の間のDurationを返します。結果が負の場合は、t2のほうが早い時刻であることを示します。
package main
import (
"fmt"
"time"
)
func main() {
a := time.Date(2026, time.May, 30, 9, 0, 0, 0, time.UTC)
b := time.Date(2026, time.May, 30, 12, 0, 0, 0, time.UTC)
fmt.Println(b.Sub(a))
}時刻の比較
時点を比較するには、Before、After、Equalを使用します。==は内部のロケーションも比較するため、使用は避けてください。
package main
import (
"fmt"
"time"
)
func main() {
a := time.Date(2026, 5, 30, 9, 0, 0, 0, time.UTC)
b := time.Date(2026, 5, 30, 10, 0, 0, 0, time.UTC)
fmt.Println(a.Before(b))
}Unixタイムスタンプ
t.Unix()は、1970年1月1日からの経過秒数を返します。time.Unix(sec, 0)を使うと、time.Timeに戻せます。
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 5, 30, 0, 0, 0, 0, time.UTC)
secs := t.Unix()
fmt.Println(time.Unix(secs, 0).UTC().Year())
}クイックチェック
t2.Sub(t1)は何を返しますか?
まとめ:時刻とDuration
時刻の基本的なモデルを学びました。
time.Timeは時点、time.Durationは期間を表します。NowとDateで作成し、AddとAddDateでずらします。Subで差を測定し、Before/Afterで比較します。
package main
import (
"fmt"
"time"
)
func main() {
start := time.Date(2026, 5, 30, 8, 0, 0, 0, time.UTC)
end := start.Add(45 * time.Minute)
fmt.Println(end.Sub(start).Minutes(), "minutes")
}よくある質問
「時間と継続時間」レッスンは無料ですか?
はい。「時間と継続時間」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。
「時間と継続時間」で何を学びますか?
時点と時間間隔を表します ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Go Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「時間と継続時間」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGo Academyレッスンでコードを書いて実行できますか?
はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 時間と継続時間
- 書式設定と解析
- タイマーとTicker
- タイムゾーン