エムスリーエンジニアリングG/BIRの遠藤です。
アドベントカレンダーは終わっちゃっいましたが、年納めに小ネタを。
BIRはビジネスインテリジェンス&リサーチの略で、そこでは医療従事者の会員向けアンケートをベースに、製薬会社へのマーケティング支援を提供する事業を行っています。
BIRでは多くのシステムをGoで実装しています。
業務で1年利用してだいぶ慣れてきましたが、 先日思わぬ時刻のオフセットの問題に引っかかったので紹介します。 最終的には言語関係ない問題だったので、もしかすると他の言語でも似たような問題があるのかもしれません。
- IsZero()が正常に判定されない
- 0001-01-01T09:18:59 とは?
- なぜIsZero判定できなくなったか?
- この問題を回避するには
- 1. UTCで運用
- 2. Asia/Tokyoのオフセットを+09:00に固定
- 3. オフセット情報のない形式にシリアライズ
- 4. LMTのオフセットを表現できる形式でシリアライズ
- 5. ゼロ値をnil(null)で表現
- まとめ
- (2021/01/04 追記)
- We're hiring!