在24小时时间制下获取当前时间和日期

14

我在获取24小时制下的当前时间时遇到了问题。据我所知,"HH"应该代表24小时制下的当前小时数,但是由于某种原因,"HH"根本没有被解释。这就是为什么以下代码行输出类似于"HH:50:06 Uhr, 02. Sep."的东西:

DateFormat.format("HH:mm:ss 'Uhr', dd. MMM", new Date());
任何想法我做错了什么?使用"hh"可以工作,但是这将在12小时制上输出时间,这不是我想要的。帮助感激不尽!

1
请查看此处:http://developer.android.com/reference/android/text/format/DateFormat.html#HOUR_OF_DAY 希望能对您有所帮助! - Dimitris Makris
关于来自Dimitris Makris的链接中的格式字符:“在API级别17之前,仅支持adEhkMmszy。请注意,为了向后兼容,此类错误地将k实现为H。”这似乎解释了为什么大写的H被识别为H - Ole V.V.
3个回答

36
你可以使用SimpleDateFormat来按你想要的方式格式化它,这样做就行了:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String str = sdf.format(new Date());

此外,还可以查看Android文档版本


7

HH 是24小时制(0-23;偏移量为0)中表示一天中的小时格式的格式说明符,仅当您使用 SimpleDateFormat 类格式化日期时才使用该符号。

您正在使用 android.text.format.DateFormat 类的 format 方法,该方法不使用此符号,而是使用符号 k/kk 来显示24小时制中的小时。 因此,必须按以下方式指定日期格式字符串:

DateFormat.format("kk:mm:ss 'Uhr', dd. MMM", new Date());

感谢您对此进行详细说明。 - Tim
这很不幸,因为http://developer.android.com/reference/android/text/format/DateFormat.html上的Javadoc声明:“有关格式字符串的规范文档,请参阅SimpleDateFormat。” - Robert Tupelo-Schneck
@RobertTupelo-Schneck,是的,这并不明显,规范文档仅适用于在使用类的工厂方法时以及当你提供自己的格式字符串时。 - Vineet Reynolds

1

试试这个:

      SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
      String s = sdf.format(new Date());

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