我想在Spring中获得当前日期和时间并格式化它。我使用LocalDateTime获取当前日期,但它是这样的:2021-08-23T18:24:36.229362200
并希望以这种格式获得它:"MM/dd/yyyy h:mm a
"我试过了:
LocalDateTime localDateTime = LocalDateTime.now(); //ziua de azi
String d = localDateTime.toString();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM//dd//yyyy h:mm a");
localDateTime = LocalDateTime.parse(d, formatter);
但是我得到以下错误:
文本' 20121-08-23t18:26:37.002166200'无法在索引2处解析
请问我该如何格式化它?
br
ZonedDateTime
.now()
.format(
DateTimeFormatter.ofPattern( "MM/dd/uuuu h:mm a" )
)
或者,最好是显式的,而不是隐式地依赖默认值。也许最好是自动定位。
ZonedDateTime
.now(
ZoneId.of( "Europe/Bucharest" )
)
.format(
DateTimeFormatter
.ofLocalizedDateTime( FormatStyle.SHORT )
.withLocale(
new Locale( "ro" , "RO" ) // Romanian in Romania.
)
)
查看此代码运行在IdeOne.com。
24.08.2021, 04:09
用Locale.US
代替产生:
<标题>8/24/21, 4:11 AM
详细信息我无法想象一个场景调用LocalDateTime.now()
是正确的事情去做。这个类缺乏时区或偏移量的概念,因此它不能表示时间中的特定时刻。
用Instant
、OffsetDateTime
或ZonedDateTime
表示时间线上的某个时刻。
要捕获在特定时区中看到的当前时刻,请使用ZonedDateTime
。
ZoneId z = ZoneId.systemDefault() ; // Or specify a zone.
ZonedDateTime zdt = ZonedDateTime.now( z ) ;
java。时间自动为您定位。
Locale locale = new Locale( "ro" , "RO" ) ; // For Romanian in Romania. Or `Locale.US`, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatSyle.SHORT ).withLocale( locale );
String output = zdt.format( f ) ;
或者您可以硬编码特定的格式。不要像Question中那样使用对斜杠字符。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu h:mm a" ) ;
我在你的问题或代码中没有看到关于Spring的任何具体内容。这些是一般的Java问题。
标题>LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm a");
String formattedDate = localDateTime.format(formatter);
System.out.println(formattedDate);