7

time.Now() フィールドをデータベースに挿入しようとしていますが、時間が UTC にシフトされ続けます。ユーザーに提示するときに、常にそれを現地時間に変換するという考えを理解しています。問題は、私がこのシステムを継承しており、現在、簡単に変更できるほど根付いていないことです。

任意のヒント?DSN で loc を設定できることはわかりましたが、何を変更すればよいか、またその実際の効果については説明されていません。そこで情報をいただければ幸いです。

編集:go-mysql 1.1とgo 1.6.3を使用したMySQL DBです。データは DATETIME フィールドに挿入されています。

挿入時のデータが正しくありません。GORM デバッグは 1 回を示し、MySQL クエリ ロガーはそれが前方にシフトしたことを示します。

問題は、go-mysql ドライバーが時刻を UTC に自動的にシフトすることであり、これは DSN の loc パラメーターを使用して変更できることがわかりました。ただし、これにより、時間が返される方法も変わります。

これを解決するには、loc=Local を DSN に追加します。

4

2 に答える 2