24小时内显示日期

时间:2015-02-17 09:58:01

标签: android datetime android-date

我正在使用简单的应用,我可以获得最新的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中的屏幕截图:

enter image description here

华为Ascend Y330的屏幕截图:

enter image description here

那么,究竟是什么问题?我不明白。是android系统问题吗?或设备问题?

任何人都知道。

4 个答案:

答案 0 :(得分:4)

所以this post建议使用SimpleDateFormat代替DateFormat。有关这两个类之间差异的更多说明,您可以查看this post

答案 1 :(得分:2)

根据documentation SimpleDateFormat可以处理' H' 24小时格式但DateFormat需要' k'。

  

使用文字' H' (与SimpleDateFormat和。的兼容性   Unicode)或' k' (与Android版本的兼容性和   包括Jelly Bean MR-1)。请注意,这两个是   不兼容。

答案 2 :(得分:1)

试试这个,

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);

答案 3 :(得分:0)

这适用于所有设备,

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)