如何从DateFormat中删除SECONDS字段

时间:2013-07-26 16:32:35

标签: java android localization date-format

我想以语言环境的默认格式打印没有秒的时间。 因此,我使用getTimeInstance()getTimeInstance(int style)获取格式化程序。但即使我使用SHORT样式,它也会包含秒的部分时间。

有没有办法(除了创建我自己的格式,然后不会是语言环境默认和手动维护)我可以获取默认值并分割秒数?

由于

罗马

3 个答案:

答案 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对象,但相同的代码适用于许多其他日期和时间类,包括LocalDateTimeOffsetDateTimeOffsetTime和{{ 1}}。

要使用ZonedDateTime以及Android上提到的任何其他类,您需要ThreeTenABP。有关如何进入this question: How to use ThreeTenABP in Android Project的详细信息。对于任何非Android Java 6或7,请使用ThreeTen Backport