アプリ版:「スタンプのみでお礼する」機能のリリースについて

Androidで「午前 09:34」のような表記をしたくて以下のような関数を作りました。
端末の時間が12時を過ぎると午前/午後が逆になります。
なぜなのでしょう?

private String formatTime(int hour, int minute) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, hour);
cal.set(Calendar.MINUTE, minute);

SimpleDateFormat sdf = new SimpleDateFormat("a KK:mm", Locale.getDefault());
return sdf.format(cal.getTime());
}

質問者からの補足コメント

  • Calendar cal = Calendar.getInstance()の後にタイムゾーンを確認したら日本で端末のタイムゾーンになってました

      補足日時:2019/03/29 13:33
  • データが18:36の場合、午後06:36と表示したいです。
    午前中は正しく表示されるのですが、12時を過ぎると午前06:36となってしまいます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/01 23:52

A 回答 (1件)

「端末の時間が12時を過ぎると午前/午後が逆になります。

」ってどういうことでしょうか? 0時から 11時までは「午前」になって, 12時以降 (例えば 18時) だと「午前」になるってこと? で, 次の 12時になると今度は「午後」になる?
この回答への補足あり
    • good
    • 0
この回答へのお礼

Calendar.HOURではなく、Calendar.HOUR_OF_DAYが正解でした。
Calendar.HOURはCalendar.AM_PMとセットなので
元のソースだとCalendar.AM_PMが残ってしまい
現在時刻が午後になると、逆になるという現象になったようです。

お礼日時:2019/04/16 05:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!