Java 如何从DateFormat中删除秒字段

Java 如何从DateFormat中删除秒字段,java,android,localization,date-format,Java,Android,Localization,Date Format,我想以区域设置的默认格式打印一个没有秒的时间。 因此,我使用getTimeInstance()或getTimeInstance(int样式)获取格式化程序。但是,即使我使用SHORT样式,它也会包含时间的秒部分 除了创建我自己的格式之外,还有什么方法可以让我获取默认值并分割秒数呢 谢谢 Roman编辑:这是不够的(如下面第一条评论所述)。出于历史的考虑,我将此保留在这里,并防止其他人以类似的方式作出回应:) 您是否考虑过将当前格式保存为字符串并使用字符串的子字符串方法手动删除秒数?DateFo

我想以区域设置的默认格式打印一个没有秒的时间。 因此,我使用
getTimeInstance()
getTimeInstance(int样式)
获取格式化程序。但是,即使我使用
SHORT
样式,它也会包含时间的秒部分

除了创建我自己的格式之外,还有什么方法可以让我获取默认值并分割秒数呢

谢谢


Roman

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



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

DateFormat.getTimeInstance(DateFormat.SHORT)在这里可以很好地工作:从20:00:00到20:00,从晚上8:00:00到晚上8:00。

如果有人正在阅读本文,并且使用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
ZonedDateTime


要使用
DateTimeFormatter
和Android上提到的任何其他类,您需要。有关如何输入的更多详细信息。对于任何非Android Java 6或7,使用。

这是不够的。一个区域设置可以使用
HH:mm:ss
,然后您希望将其设置为
HH:mm
(从而删除:分隔符),而其他区域设置可以使用
HH'm'min.'s'sec.
并且您希望将其设置为
HH'm'min.
。你会删除什么?啊,完全误解了这个问题。删除:)看看Joda日期时间API,JDK日期和时间类-@tech idiot+1 for JodaTime更简单、更高效。在使用Android()时要注意这一点,感谢指向Joda Date Time的指针,但仅仅是格式化这一点似乎有些过分;另外,我需要android(只在标签中提到)的这个,所以对于提到的android问题,Joda可能不是一个选项。好的指针,读到这里,我想知道我是否没有尝试过这个(或者我做错了什么);当然,在普通Java(至少7个)和Android中,这是可行的。谢谢你让我重温这个