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

I have a time value which is in 12 hrs format(hh:mm:ss a). Now I want to localize value of "a"(AM/PM) in given language

英文时间值为 02:34:23 AM。

现在,如何在 español(墨西哥)中获取本地化时间值,即在 "es-mx" 中,AM 值也使用 java 本地化。

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

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

有人可以帮我吗..

LocalePlanet 解释显示 AM/PM es_MX 的格式相同。
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
}

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

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

    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.