

Goのtime.Time型の日時をフォーマットして元の変数に代入するようにしたのですが、変換されません。

[code]

    hoge.CreatedAt, err = time.Parse("2006年1月2日15時4分", hoge.CreatedAt.Format("2006年1月2日15時4分"))
    
[/code]

ここで`hoge.CreatedAt`を表示しても変換前のままです。  
変換前の日付  
`2015-09-01 08:12:00 +0000 UTC`

なぜ変換されないのでしょうか。


CC BY-SA 3.0
2015-09-01T02:20:11.327
15107
2021-01-14T01:20:50.827
7232
question
go
Goの日付変換処理


`hoge.CreatedAt`は`time.Time型`で文字列データではなく、時刻表記のフォーマットを変更しても内部データは変化しません(同じ時刻であれば)。  
なので、フォーマットを変更する場合は新たに`string型`の変数を用意して、`str :=
hoge.CreatedAt.Format("2006年1月2日15時4分")` などとする必要があります。

また、時刻データ(time.Time型変数の中身)は文字列ではありませんし、フォーマット情報は含まれていません。  
そのため、(文字列を取得する場合は)`Format()`メソッドを使って、指定したフォーマットで表記される **日時・時刻文字列**
を随時取得する必要があるのです。

* * *

この投稿は @user9156
さんの[コメント](https://ja.stackoverflow.com/questions/15107/go%e3%81%ae%e6%97%a5%e4%bb%98%e5%a4%89%e6%8f%9b%e5%87%a6%e7%90%86#comment13716_15107)などを元に編集し、[コミュニティWiki](https://ja.meta.stackoverflow.com/q/1583)として投稿しました。


CC BY-SA 4.0
2021-01-14T01:20:50.827
73281
2021-01-14T01:20:50.827
9820
15107
answer