Search code examples
androidtimelocale

How do I check if system is 12 or 24 hour?


I am trying to determine if the current locale is set to 12 or 24 hour, and set am/pm accordingly. This is what I have got right now, but it shows am/pm all the time regardless if it is set to 24.

if (DateFormat.is24HourFormat(this))
{
    mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
    int hourOfDay = mHour;
    if (hourOfDay>12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay==12)
        views.setTextViewText(R.id.AMPM, "pm");
    if (hourOfDay<12)
        views.setTextViewText(R.id.AMPM, "am");
}
else {
    views.setTextViewText(R.id.AMPM, "");           
}

Solution

  • Shouldn't it be

    if (!DateFormat.is24HourFormat(this))
    

    You want to assign am/pm only when it is not set to 24 hour format, right?

    Here is a more compact version:

    if (!DateFormat.is24HourFormat(this)) {
        mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
        int hourOfDay = mHour;
        if (hourOfDay >= 12) {
            views.setTextViewText(R.id.AMPM, "pm");
        } else {
            views.setTextViewText(R.id.AMPM, "am");
        }
    } else {
        views.setTextViewText(R.id.AMPM, "");
    }