我想以语言环境的默认格式打印没有秒的时间。
因此,我使用getTimeInstance()
或getTimeInstance(int style)
获取格式化程序。但即使我使用SHORT
样式,它也会包含秒的部分时间。
有没有办法(除了创建我自己的格式,然后不会是语言环境默认和手动维护)我可以获取默认值并分割秒数?
由于
罗马
答案 0 :(得分:18)
DateFormat.getTimeInstance( DateFormat.SHORT )在这里工作得很好:从 20:00:00 到 20:00 和< em> 8:00:00 PM 到晚上8:00 。
答案 1 :(得分:1)
编辑:这是不够的(如下面第一条评论所述)。我为了历史而保留这里,并让其他人以类似的方式回应:)
您是否考虑将当前格式保存为字符串并使用String的子字符串方法手动删除秒?
答案 2 :(得分:0)
如果有人正在阅读本文,并且使用的是Java 8或更高版本,或者对于(良好且未来的)外部库很好:
DateTimeFormatter noSeconds = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT)
.withLocale(Locale.ITALY);
LocalTime time = LocalTime.now(ZoneId.systemDefault());
System.out.println(time.format(noSeconds));
刚刚打印出来:
15.26
请替换所需的区域设置,而不是Locale.ITALY
。使用Locale.getDefault()
作为JVM的语言环境设置。我相信它在所有语言环境中都没有秒数打印。
在代码中我使用了LocalTime
对象,但相同的代码适用于许多其他日期和时间类,包括LocalDateTime
,OffsetDateTime
,OffsetTime
和{{ 1}}。
要使用ZonedDateTime
以及Android上提到的任何其他类,您需要ThreeTenABP。有关如何进入this question: How to use ThreeTenABP in Android Project的详细信息。对于任何非Android Java 6或7,请使用ThreeTen Backport。