2016-04-18 8 views
0

私は、それらがcreatedAt、updatedAt、およびdeletedAtのtime.Timeフィールドを意味するgormモデルを拡張する多くの構造体を持っています。これらをJSONにマーシャリングすると、受け取った日付の形式が異なります。jsonのエンコードされた時間の可変秒数

2016-04-18T00:03:適切なRFC3339は、それがどのように見える生成しなければならないタイムスタンプ20Z

しかし、私はこのように時間の約20%をフォーマットされた日付を取得しています。残りのタイムスタンプのサブ秒数は可変です。

2016-04-18T05:51:11.54772087Z

2016-04-18T05:51:11.543835101Z

2016-04-18T05:53:20.1674444Z

Iは、次の形式を受けています

私は強制することができます方法はありますか私に一貫したタイムスタンプを与えることに行きますか?前もって感謝します!

+0

これはRFC3339ではありません。そのRFC3339Nanoを参照してください。http://play.golang.org/p/7oJ_-7FmB - (それは地元で実行して、遊び場での時間は限られています)、あなたが最初のものを手に入れた時と他の時を見ることができますか? – fzerorubigd

+0

@fzerorubigd取得中 2016-04-18T18:35:39-04:00 2016-04-18T18:35:39.524444112-04:00 私はそれをローカルで実行します。それらのどちらもGoのjsonパーサから取得している日付のスキーマと一致しません。何か案は? – AttilaTheFun

答えて

0

出力を制御する最適な方法は、独自のタイプを作成することです。 type MyTime time.Timeと書式設定してMarshallerUnmarshallerを実装してください。ヒントについては、time.MarshalJSONおよびtime.UnmarshalJSONを参照してください。これをデータベース列に必要とする場合は、ScannerValuerも実装してください(see this answer)。他のMarshaller/Unmarshallerのインターフェースを実装する必要があります(例えばyaml/gob/...)

関連する問題