先日シアトル出張があったときに Fly Delta アプリで飛行機のチェックインをしようとしたんですよね。
そしたら、パスポートの情報を入力するところで誕生日と有効期限の日付がエラーになってしまいチェックインできませんでした。
そういえば、前に何処かに行くときにも同じエラーにぶち当たった記憶がうっすらと浮かんできた。 その時は確か手持ちの iPhone を使ってチェックインした記憶がうっすらと…。
対応方法
Android しか手持ちにない場合どうすればいいか?というところですが、以下の方法でエラーが出ずにチェックインできるようになります。
Android の設定のシステムのところにある言語と入力から言語を English (United States) に変更。 その後にアプリを再起動してチェックインすると日付のエラーも消えてさくっと入れます。
妄想
Fly Delta の日付入力は月と日と年をドロップダウンから選択する形式です。そのためフリー入力とは違い入力ミスによるフォーマットエラーは起きません。もちろんありえない日付を入力(パスポートの有効期限が過去の日付とか)を入力することでエラーが起きる可能性はありますが、ここではちゃんとした日付を入力してもエラーになるので根本的に何かが間違ってる。
スクリーンショットをとるのを忘れてたので記憶での話になるのですが月のところが日本語でも January, February, ... という選択肢だったのでもしかすると SimpleDateFormat クラスのフォーマットが英語前提になってるのかもしれませんね。こんな感じに。
import java.lang.*; import java.util.*; import java.text.*; publicclass Program { publicstaticvoid main(String[] args) { test(Locale.ENGLISH); test(Locale.JAPANESE); } privatestaticvoid test(Locale l) { try { System.out.println("------------"); System.out.println(l); DateFormat fmt = new SimpleDateFormat("MMM d, yyyy", l); System.out.println(fmt.format(new Date())); Date d = fmt.parse("December 14, 2018"); System.out.println(d); } catch (Exception e) { System.out.println(e.getMessage()); } } }
実行するとこんな感じの結果になります。
C:\Projects\JavaEdu>java Program ------------ en Feb 5, 2018 Fri Dec 14 00:00:00 JST 2018 ------------ ja 2月 5, 2018 Unparseable date: "December 14, 2018"
まとめ
いろんな国に配るアプリの場合は基本のユースケースくらいは流して落ちないかということの確認大事だなと思いました。
そこで、実機 UI テストの出来る Visual Studio App Center ですよね!!