0
Calendar c = Calendar.getInstance(); 
String myDateString = (String) DateFormat.format("yyyy-MM-dd hh:mm", c.getTime());

dateTv.setText(myDateString);

输出是:

2014-02-13 04:31

小时实际上不是 04,而是 16,我的意思是它在名词之后,而不是在午夜(凌晨 4 点)之后,如果你知道我的意思的话。

为什么会发生,我该如何解决?

编辑:

对于可爱的 -1 选民:

正如有人建议的那样:

  String myDateString = (String) DateFormat.format("yyyy-MM-dd HH:mm", c.getTime());

这个解决方案给了我这个确切的字符串:

2014-02-13 HH:45

是的。在我的时间里有 2 个“H”字符。它恰好是一个 H 字符,而不是一个数字。

4

2 回答 2

5

利用HH

hh指使用 PM 和 AM 的小时数。其中你没有显示

String myDateString = (String) DateFormat.format("yyyy-MM-dd HH:mm", c.getTime());

根据Android 文档

H = 一天中的小时 (0-23)

h = 上午/下午小时 (1-12)

编辑:似乎存在某种问题,H17 以下的 API 不支持,因此最好使用kk这实际上是正确的HH实现。

在 API 级别 17 之前,仅支持 {@code adEhkMmszy}。请注意,此类错误地实现了 {@code k} ,就好像它是 {@code H} 以实现向后兼容性。

于 2014-02-13T15:38:14.537 回答
2

尝试用“kk”替换“hh”,如下所示:

Calendar c = Calendar.getInstance(); 
String myDateString = (String) DateFormat.format("yyyy-MM-dd kk:mm", c.getTime());

dateTv.setText(myDateString);

从这里:https ://stackoverflow.com/a/7078488/2065418

于 2014-02-13T15:52:33.017 回答