gpt4 book ai didi

java - 如何在Java 8中将三个字母月份名称日期的首字母大写

转载 作者:行者123 更新时间:2023-11-29 08:23:47 27 4
gpt4 key购买 nike

我有以下字符串表示像这样的日期“20190123”,我想将它转换成这种格式“25 Dic 2019”,月份名称应该是西类牙语,到目前为止第一个字母应该是大写我有这个

    String input = "12252013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "MMddyyyy" );
LocalDate localDate = LocalDate.parse( input , formatter );
Locale spanishLocale=new Locale("es", "ES");
String dateInSpanish=localDate.format(DateTimeFormatter.ofPattern("dd MMM, yyyy",spanishLocale));
System.out.println("'2016-01-01' in Spanish: "+dateInSpanish);

这打印 "25 dic, 2013" 我希望它像这样 "25 Dic 2019"

最佳答案

DateTimeFormatter 根据语言环境规则使用月份名称和大写。

在英语中,必须将月份的第一个字母大写,而在西类牙语中则不然。对于西类牙语,必须按照 RAE 将其设为小写字母

您将不得不使用 DateFormatSymbols 类来覆盖月份名称,如下所示,或者只需通过编写一些代码将第一个空格后的第一个字母 dateInspanish 的最终字符串转换为大写。

解决方案仅适用于 Java7 或更低版本。对于 Java 8 及更高版本,请查看@Ole V.V.的回答

        String input = "12252013";
Locale spanishLocale=new Locale("es", "ES");

DateFormatSymbols sym = DateFormatSymbols.getInstance(spanishLocale);
sym.setMonths(new String[]{"Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" });
sym.setShortMonths(new String[]{"Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic" });

DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, spanishLocale);
SimpleDateFormat sdf = (SimpleDateFormat) df;
sdf.setDateFormatSymbols(sym);

Date inputDate = new SimpleDateFormat("MMddyyyy").parse(input);

String dateInSpanish = sdf.format(inputDate);
System.out.println(dateInSpanish);

关于java - 如何在Java 8中将三个字母月份名称日期的首字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55213972/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com