Go言語で日付を扱う方法

Go言語で日付を扱う方法

Go言語で日付を扱う方法について説明します。
Go言語では、標準ライブラリの time パッケージを使用して、日付や時間の処理を行います。
time パッケージには、日付や時間を取得、操作、フォーマットするためのさまざまな機能が提供されています。

日付と時間の取得

日付と時間を取得するには、time パッケージの Now 関数を使用します。
これにより、現在の日時を Time 型で取得できます。
例えば、次のコードは現在の日時を取得して表示します。

package main

import (
  "fmt"
  "time"
)

func main() {
  currentTime := time.Now()
  fmt.Println("Current Time:", currentTime)
}

日付と時間のフォーマット

Time 型の値を特定のフォーマットで文字列として表示するには、Format メソッドを使用します。
Format メソッドには、標準のフォーマット文字列を指定する必要があります。
Goでは、フォーマット文字列には特定の日付を基にした例を使用します。
例えば、"2006-01-02 15:04:05" という文字列が用意されており、これは 2006年1月2日 15:04:05 を表しています。

以下のコードは、現在の日時を "2006-01-02 15:04:05" 形式で表示します。

package main

import (
  "fmt"
  "time"
)

func main() {
  currentTime := time.Now()
  formattedTime := currentTime.Format("2006-01-02 15:04:05")
  fmt.Println("Formatted Time:", formattedTime)
}

日付と時間のパース

文字列から Time 型に変換するには、Parse 関数を使用します。
Parse 関数には、対象のフォーマット文字列と日付の文字列を指定します。
次の例では、特定のフォーマットに従った文字列を Time 型に変換しています。

package main

import (
  "fmt"
  "time"
)

func main() {
  layout := "2006-01-02 15:04:05"
  dateString := "2024-08-27 14:30:00"
  parsedTime, err := time.Parse(layout, dateString)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println("Parsed Time:", parsedTime)
}

時間の操作

Time 型の値に対して時間の加算や減算を行うには、Add メソッドを使用します。
Add メソッドには Duration 型の値を指定します。
Duration 型は、時間の長さを表すための型です。
次のコードは、現在の日時に2時間を加算して表示します。

package main

import (
  "fmt"
  "time"
)

func main() {
  currentTime := time.Now()
  futureTime := currentTime.Add(2 * time.Hour)
  fmt.Println("Future Time:", futureTime)
}

タイムゾーンの処理

Time 型にはタイムゾーンの情報が含まれており、Location 型を使用してタイムゾーンを取得または設定できます。
タイムゾーンの取得は Location メソッドを使用し、設定は In メソッドを使用します。
次の例では、UTCタイムゾーンの時間を表示します。

package main

import (
  "fmt"
  "time"
)

func main() {
  currentTime := time.Now()
  utcTime := currentTime.In(time.UTC)
  fmt.Println("UTC Time:", utcTime)
}

Go言語の time パッケージを使用することで、日付と時間に関する多くの操作が簡単に行えます。