Java 如何将时间格式从24小时更改为12小时

Java 如何将时间格式从24小时更改为12小时,java,android,datetime-format,Java,Android,Datetime Format,我正在使用TextView设置日期和时间的日期名称,但时间显示为24小时,我想设置为12小时格式。有谁能帮我改变一下这种格式吗 textDateTime.setText(new SimpleDateFormat("EEEE, dd MMMM yyyy HH:mm a", Locale.getDefault()).format(new Date())); 这是关于您在SimpleDateFormat中输入的格式,因为您正在使用HH 24小时服务。尝试hh 12小时格式。 参见

我正在使用TextView设置日期和时间的日期名称,但时间显示为24小时,我想设置为12小时格式。有谁能帮我改变一下这种格式吗

textDateTime.setText(new SimpleDateFormat("EEEE, dd MMMM yyyy HH:mm a", Locale.getDefault()).format(new Date()));

这是关于您在SimpleDateFormat中输入的格式,因为您正在使用HH 24小时服务。尝试hh 12小时格式。 参见或。

tl;博士 使用现代java.time类

自动本地化,而不是硬编码格式

当地时间 现在 总体安排 DateTimeFormatter.ofLocalizedTime FormatStyle.SHORT 看这个

下午5:08

避免遗留类 永远不要使用糟糕的Date和SimpleDateFormat类。多年前,JSR310中定义的现代java.time类取代了这些类

java.time 您似乎希望在特定时区中看到当前时间。时区至关重要。对于任何给定的时刻,一天中的时间和日期在全球各地因时区而异

ZoneId z = ZoneId.systemDefault() ;  // Or ZoneId.of( "America/Edmonton" )
LocalTime now = LocalTime.now( z ) ;
让java.time为您自动本地化

Locale locale = Locale.CANADA_FRENCH ;  // Or Locale.US etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedTime( FormatStyle.SHORT ).withLocale( locale ) ;
String output = now.format( f ) ;
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

该项目现已启动,建议迁移到类

您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要java.sql.*类。Hibernate5和JPA2.2支持java.time

从哪里获得java.time类

、和更高版本-标准Java API的一部分,带有捆绑实现。 带来了一些小功能和修复。 和 大多数java.time功能都在中向后移植到Java6和Java7。 Android 26+的更高版本捆绑了java.time类的实现。
对于较早的Android来说,考虑抛弃那些过时的、臭名昭著的简单的格式和朋友。看看是否可以使用或添加到Android项目中,以便使用java.time,即现代java日期和时间API。和你一起工作真是太好了。