我有一个 12 小时格式的时间值(hh:mm:ss a)。现在我想在给定语言中本地化"a" (AM/PM) 的值



英语中的时间值是 02:34:23 AM。

现在,如何在西班牙语(墨西哥(中获取本地化的时间值,即在"es-mx"中,AM值也使用java进行本地化。

我尝试使用SimpleDateFormat.getTimeInstance(int style, Locale aLocale).但只有时间值被本地化,AM/PM 仍然是英文的。

注意:本地化值也应采用"hh:mm:ss a"格式。

有人可以帮我吗..

当您尝试格式化转换的日期/时间时,您必须解析输入,这需要两个DateFormat对象。一个用于设置输入,另一个用于解析输入。要了解我如何使用"HH:mm:ss"KK:mm a格式化String input,请参阅此处的日期和时间模式。

你提到你想专门为墨西哥格式化它。墨西哥的AM/PM时间格式与en相同,他们使用12小时时间格式。但是,如果您希望将其格式化为a. m.只需将es_MX更改为es.更多信息请点击此处。

public static void main(String[] args) throws ParseException
{
String input = "02:34:23";
DateFormat inputFormat = new SimpleDateFormat("HH:mm:ss");
DateFormat outputFormat = new SimpleDateFormat("'Time:' KK:mm a", Locale.forLanguageTag("es_MX"));
System.out.println(outputFormat.format(inputFormat.parse(input)));
}

使用es而不是es_MX时的输出:

Time: 02:34 a. m.

LocalePlanet解释说,es_MX的AM/PM格式是相同的。
http://www.localeplanet.com/java/es-MX/index.html

仍然需要更改一种可能的方式来编写包装器方法以将 AM/PM 替换为所需的字符串。

public static String dateConverter(Date date) {
Locale locale = new Locale("es", "MX");
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT, locale);
String newDate = dateFormat.format(date).replaceAll("AM","myAM").replaceAll("PM","myPM");
return newDate
}

最新更新