4

我想以区域设置的默认格式打印不带秒的时间。所以我用getTimeInstance()or得到格式化程序getTimeInstance(int style)。但即使我使用一种SHORT样式,它也会包含时间的秒部分。

有什么办法(除了创建我自己的格式,这将不是语言环境默认值并手动维护)我可以获取默认值并拆分秒数吗?

谢谢

罗马

4

3 回答 3

20

DateFormat.getTimeInstance( DateFormat.SHORT ) 在这里工作得很好:从20:00:0020:00以及从8:00:00 PM 到 8:00 PM

于 2014-12-13T16:25:20.213 回答
1

编辑:这是不够的(如下面的第一条评论所述)。为了历史的缘故,我将其保留在这里,并防止其他人以类似的方式做出回应:)


您是否考虑过将当前格式保存为字符串并使用 String 的 substring 方法手动删除秒数?

于 2013-07-26T16:44:09.090 回答
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、和.OffsetDateTimeOffsetTimeZonedDateTime

要使用DateTimeFormatterAndroid 上提到的任何其他类,您需要ThreeTenABP。有关如何在此问题中的更多详细信息:如何在 Android 项目中使用 ThreeTenABP。对于任何非 Android Java 6 或 7,请使用ThreeTen Backport

于 2017-06-27T13:34:29.970 回答