2017-05-15 3 views
-1

私は時間を扱っています。間違ったタイムゾーンで解析された時間オブジェクトです。内部的にはUTCがありますが、元のデータは、タイムゾーンEurope/Parisで内部的に日付時刻を保存するレガシーMySQLデータベースからのものです。時間を変更します。再解析を行わないタイムゾーン

時間の内部タイムゾーンを再解析することなく変更したいと考えています。私はtime.In()関数を試してみましたが、別のタイムゾーンで同じ時間を返すので、私のユースケースは解決しません。

最終的な解決方法はhttps://golang.org/pkg/time/#ParseInLocationを使用して、元の値から適切な場所に日付を再作成することです。しかし、これが避けられれば、これはより良いでしょう。

どのような考えですか?

ありがとうございました。

+0

最終的にどのようなTZに関連付けられますか? UTCまたはローカル? – captncraig

+0

@peterSO質問は明確で、私にはコードは必要ありません。あなたが同意しない場合、あなたはdownvoteすることができます。 –

+0

データベースの正確な形式は何ですか? TZは明示的に関連付けられていますか? – captncraig

答えて

0

ちょうどAddに固定されていますか?

t,_ := time.Parse(...) 
t = t.Add(-4 * time.Hour) // or whatever offset makes it work 

// t is now correct utc time 
// In should work less badly: 
localTime := t.In(myRealLocation) 
+0

ありがとうございました。これとDSTの考えは? MySQL datetime型はtz/offsetを格納しないので、それについて知る方法はないと思います。 –

+0

Ug。時間は最悪です。タイムゾーン情報について何も書き留めなくても、DSTに合わせたローカルタイムスタンプが本当にありますか?もしそうなら、私は日付をチェックし、オフセットを調整する以外の方法を考えることができません。 – captncraig

+1

タイムゾーン情報を持たないタイムスタンプを保存すると、実際には致命的な犯罪になるはずです... – Kaedys

関連する問題