Дата отображения в 24-часовом выпуске

Я работаю с простым приложением, в котором я могу получить текущий DateTime и преобразовать его в формат 24-hour.

Код:

  String DATE_yyyy_MM_dd_hh_mm_ss = "yyyy-MM-dd hh:mm:ss";

  String DATE_yyyy_MM_dd_HH_mm_ss  = "yyyy-MM-dd HH:mm:ss";  
  

  TextView tv=(TextView)findViewById(R.id.textView);
    
  tv.append("\n in 12-hour format: "+getDateFormatted(bootDate));
    
  tv.append("\n in 24-hour format: "+getDateFormatted2(bootDate));

  public String getDateFormatted(Date date){
    return String.valueOf(DateFormat.format(DATE_yyyy_MM_dd_hh_mm_ss, date));
}

public String getDateFormatted2(Date date){
    return String.valueOf(DateFormat.format(DATE_yyyy_MM_dd_HH_mm_ss, date));
}

Проблема:

Он отлично работает на моих устройствах Samsung Galaxy S3(Android 4.3), S4(Android 4.3) and Nexus 5(Android 4.4). в то время как тот же код, который я запускаю в Huawei Ascend Y330 device(Android 4.2.2), не отображается должным образом.

Скриншот в Samsung Galaxy S3, S4 и Nexus 5:

введите здесь описание изображения

Скриншот Huawei Ascend Y330:

введите здесь описание изображения

Итак, в чем проблема на самом деле? Я не понимаю. Это проблема системы Android? или проблема с устройством?

Любая идея любого.


person M D    schedule 17.02.2015    source источник
comment
У вас есть эта проблема только с Huawei Ascend Y330?   -  person Skizo-ozᴉʞS    schedule 17.02.2015
comment
Вы пытались использовать SimpleDateFormat вместо DateFormat (например, этот пост объяснил)?   -  person lgd    schedule 17.02.2015
comment
@Skizo Только на Huawei Ascend Y330 конкретном устройстве, в то время как он отлично работает на всех остальных 5 устройствах.   -  person M D    schedule 17.02.2015
comment
@heRoy Хорошо, подожди, дай мне попробовать...   -  person M D    schedule 17.02.2015
comment
Попробуйте использовать SimpleDateFormat, как сказал @heRoy, и сообщите нам, сработало ли это, если это не сработало, вероятно, это проблема с устройством...   -  person Skizo-ozᴉʞS    schedule 17.02.2015
comment
@heRoy Он отлично работает с SimpleDateFormat. спасибо приятель. Я должен уже попробовать. Пожалуйста, опубликуйте его с каким-нибудь ответом. Значит, другие люди, способные это знать...   -  person M D    schedule 17.02.2015


Ответы (4)


Итак, этот пост предложил использовать SimpleDateFormat вместо DateFormat. Для получения дополнительных сведений о различиях между этими двумя классами вы можете взглянуть на это сообщение.

person lgd    schedule 17.02.2015

Согласно документации SimpleDateFormat может обрабатывать 'H' для 24-часового формата, но DateFormat нужно «k».

Вместо этого используйте букву «H» (для совместимости с SimpleDateFormat и Unicode) или «k» (для совместимости с версиями Android до Jelly Bean MR-1 включительно). Обратите внимание, что они несовместимы.

person Gorcyn    schedule 17.02.2015

Попробуй это,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());

TextView tv=(TextView)findViewById(R.id.textView);
tv.append("\n in 12-hour format: " +sdf);
tv.append("\n in 24 -hour format: " +sdf2);
person Apurva    schedule 17.02.2015
comment
@MD Я не знал, что @heRoy уже сказал вам в комментарии использовать SimpleDateFormat, иначе я бы не опубликовал ответ. Может быть, писал ответ в то время. - person Apurva; 17.02.2015

Это работает на всех устройствах,

static final SimpleDateFormat IN_DATE_FORMAT = new SimpleDateFormat("HH:mm:ss", Locale.US);
static final SimpleDateFormat OUT_DATE_FORMAT = new SimpleDateFormat("hh:mma", Locale.US);

/**
 * To format the time.
 *
 * @param strDate The input date in HH:mm:ss format.
 * @return The output date in hh:mma format.
 */
private String formatTime(String strDate) {
    try {
        Date date = IN_DATE_FORMAT.parse(strDate);
        return OUT_DATE_FORMAT.format(date);

    } catch (Exception e) {
        return "N/A";
    }
}

используйте метод: formatTime(YOUR_TIME)

person dvs    schedule 17.02.2015