はじめに
今回はGo言語で時間操作系の小技を紹介していきます。
時間に関することは、timeパッケージから取得できます。
この記事は、便利なものを見つけ次第更新していきます。
現在時刻を取得
まずは、一番使用頻度の高い現在時刻の取得をしてみます。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now)
// 2023-10-05 22:57:18.7949636 +0900 JST m=+0.002079401
}
時間のフォーマット
フォーマットもすごく簡単にできます。
ただ、注意点として、フォーマット文字列の数字を変更するとおかしくなります。
ですので、数字の部分は変更しないようにしてください。
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now()
fmt.Println(now.Format("2006/01/02")) // 2023/10/05
fmt.Println(now.Format("2006/01/02 15:04")) // 2023/10/05 23:05
fmt.Println(now.Format("2006/01/02 15:04:05")) // 2023/10/05 23:05:36
}
〇〇日後の日付を取得
次は、意外とありそうな何日か後の日付を取得する方法です。
package main
import (
"fmt"
"time"
)
func main() {
// 現在の日付を取得
now := time.Now()
// 2週間後の日付を計算
twoWeeksLater := now.Add(2 * 7 * 24 * time.Hour)
// 2週間後の日付を表示
fmt.Println("今日の日付:", now.Format("2006/01/02"))
fmt.Println("2週間後の日付:", twoWeeksLater.Format("2006/01/02"))
// 今日の日付: 2023/10/05
// 2週間後の日付: 2023/10/19
}
ちなみに、2週間前の日付を取得したい場合は、以下のように記述します。
package main
import (
"fmt"
"time"
)
func main() {
// 現在の日付を取得
now := time.Now()
// 2週間後の日付を計算(マイナスにすると過去の時間になる)
twoWeeksLater := now.Add(-2 * 7 * 24 * time.Hour)
// 2週間後の日付を表示
fmt.Println("今日の日付:", now.Format("2006/01/02"))
fmt.Println("2週間前の日付:", twoWeeksLater.Format("2006/01/02"))
// 今日の日付: 2023/10/05
// 2週間前の日付: 2023/09/21
}
一定時間後に処理を実行
今度は、一定時間後に何らかの処理をする方法を紹介します。
ここでは、何らかの処理として5秒後に文字列を出力してみます。
package main
import (
"fmt"
"time"
)
func main() {
select {
case <-time.After(5 * time.Second):
fmt.Println("5秒後に実行されました。")
}
}
ちなみに、「<-」はチャネルからデータを受信するための演算子です。
チャネルについては、以下の記事で詳しく解説をしていますので、ご参考までに!
時間の比較
今度は、時間の比較をしてみます。
これは、結構使用頻度も高いと思います。
package main
import (
"fmt"
"time"
)
func main() {
currentTime := time.Now()
futureTime := currentTime.Add(1 * time.Hour)
if currentTime == futureTime {
fmt.Println("同じ時間です。")
} else {
fmt.Println("異なる時間です。")
}
}
最後に
ここまで読んでいただきありがとうございます。
今回は時間操作系の小技集を紹介しましたが、
まだまだ少ないので、随時アップデートしていきます。
また、「ここはこうしたほうが良い」などのアドバイスがあればコメントしていただけると幸いです。
コメント