在Android中从日期提取小时和分钟

4

我有一个Java util日期:Thu Feb 28 15:35:00 GMT+00:00 2013

如何将其转换为HH:MM格式。

我正在尝试使用以下代码片段来完成:

SimpleDateFormat formatter = new SimpleDateFormat("HH:MM");
        formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
        return formatter.format(objDate);

这个函数可以正确地返回dd mmm的结果,但对于HH:MM,它总是返回02分钟。

请告诉我这个函数有什么问题?


1
"M" 代表月份,"m" 代表分钟。 - gpasci
你想要24小时和分钟格式的日期,是吗? - Rais Alam
2个回答

17
MMSimpleDateFormat中的月份值。您需要使用mm。请注意,使用HH将给出24小时制(00-23)……在这种情况下,您可以使用hh来表示12小时制(01-12),但您可能还想要上午/下午标识。

有关可用格式说明符的更多详细信息,请参见SimpleDateFormat的文档

此外,请注意,为了国际化目的,您最好使用:

DateFormat formatter = DateFormat.getTimeInstance(DateFormat.SHORT, locale);

...以便使用适当的“短时间格式”来适应所给定的语言环境。如果这是为了显示(人类可读)目的而合适;对于计算机可读格式,可以创建自定义格式,但我建议明确使用Locale.US以避免获得不同的日历和格式符号(例如时间分隔符)。


感谢您给出的答案,并点赞和采纳它。您为我节省了时间并提供了宝贵的知识。 - Ankit HTech
1
应使用getTimeInstance()而非getTimeInstant()。 - Jéwôm'

4

使用

String str ="Thu Feb 28 15:35:00 GMT+00:00 2013";

SimpleDateFormat formatter_from = new SimpleDateFormat("EEE MMM dd hh:mm:ss ZZ yyyy");
SimpleDateFormat formatter_to = new SimpleDateFormat("hh:mm");

try {
    java.util.Date d = formatter_from.parse(str);

    System.out.println(formatter_to.format(d));

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

那么这就是没有上午/下午标识的12小时制时钟,这可能是所期望的。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接