Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.

各種日付がロケール依存のフォーマットで保存される #51

Closed
b-wind opened this issue Mar 9, 2021 · 3 comments
Closed
Labels
bug バグ。本来あるべき動作をしていないもの

Comments

@b-wind
Copy link

b-wind commented Mar 9, 2021

Describe the bug
各種日付がロケール依存のフォーマットで保存される為、ロケールの設定が変わると正常に取得できない。

具体的な不具合として 2021/03/09 に利用開始した場合、2021/09/03 と判断されそれまでに改訂されたプライバシーポリシーポリシーの更新はすべて無視されると言う例が挙げられます。

対象と思われるデータ

  1. startDateTime
  2. PrivacyPolicyLastUpdateDateTime
  3. TermsOfServiceLastUpdateDateTime

上記の内、 1, 2 に付いては GB ロケールで保存し、JP ロケールで表示させることで不正な値となることが #49 にて確認されています。
3 に付いても同様と思われますが、現在アプリケーション内で使われていません。

To Reproduce

  1. スマートフォンにて GB ロケールを選択
    • Android は言語設定にて English ( United Kingdam ) を選択
    • iOS は「言語と地域」にて地域を変更
  2. COCOA をインストール・起動し、利用規約・プライバシーポリシーに同意
  3. スマートフォンにて JP ロケールを選択
  4. COCOA を起動

Screenshots

Android の言語設定
COCOA_lang

GB ロケールにて起動後
cocoa_gb

JP ロケールに変更後、起動
cocoa_ja

Smartphone (please complete the following information):

  • Device: [Any]
  • OS: [iOS/Android]
  • Version [1.2.2]

Additional context

COCOA 1.2.2 でデータの保存方法が変わったことが切っ掛けの可能性があります。
上記ロケール以外でのテストはしていません。

@b-wind
Copy link
Author

b-wind commented Mar 9, 2021

対策としては各データの読み込み時・書き込み時にフォーマットを指定する事で不適切な読込を防ぐことが出来ると思います。

1例として、ISO 8601 に定義される表記として、以下の形式を提案します。(強い拘りはないので固定できれば何でも良いです)
https://ja.wikipedia.org/wiki/ISO_8601#%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%BE%E3%83%BC%E3%83%B3%E6%8C%87%E5%AE%9A%E5%AD%90

YYYY/MM/DDThh:mm:ssZ

@keiji
Copy link
Collaborator

keiji commented Mar 9, 2021

課題の解決に当たっては、日時系をISOなどの文字列や、エポック秒などのロケール非依存の方式で表現、保存するのが良さそうですね。

加えて、変更後、旧項目から新しい項目へのマイグレーションを用意しなくてはいけません。さらに言えば、現在のDateTime().ToString()にはフォーマットに関する情報が含まれていないので、一度この現象が起きてしまうとユーザーに保存時のロケールを戻してもらうなどしないと、当該情報を初期化するしか対応ができなさそうです。

@b-wind
Copy link
Author

b-wind commented Mar 9, 2021

マイグレーションは必要だと思いますが、どの程度までフォローするか、フォローしきれない部分はどうするかは仕様レベルの話になるかなと思います。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug バグ。本来あるべき動作をしていないもの
Projects
None yet
Development

No branches or pull requests

2 participants