如何本地化日期格式'z' "MM/dd/yyyy HH:mm:ss a z"



我想基于语言环境格式格式化MM/dd/yyyy HH:mm:ss a z格式。

String pattern = "MM/dd/yyyy HH:mm:ss a z";
DateFormat dateFormat = new SimpleDateFormat(pattern, new  Locale("ja", "JP"));
Date date = new Date();
System.out.println(dateFormat.format(date));

输出:

04/01/2018 17:15:23午后edt

我也想用日语展示EDT。如果我尝试zzzz而不是z该模式,然后时区域位置,并显示日语中的"东部日光时间":

String pattern = "MM/dd/yyyy HH:mm:ss a zzzz";
DateFormat dateFormat = new SimpleDateFormat(pattern, new  Locale("ja", "JP"));
Date date = new Date();
System.out.println(dateFormat.format(date));

输出:

04/01/2018 17:20:17午后东部

我们如何定位时区缩写" edt"并以日语显示?

局部字符串是在JVM中内置的,但是您可以通过从格式化器中获取DateFormatSymbols并更改它来替换它们:

String pattern = "MM/dd/yyyy HH:mm:ss a z";
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern, new Locale("ja", "JP"));
DateFormatSymbols symbols = dateFormat.getDateFormatSymbols();
String[][] zones = symbols.getZoneStrings();
for (int i = 0; i < zones.length; i++) {
    // position 4 is the abbreviation for Daylight Saving Time
    String zoneAbbrev = zones[i][4];
    // overwrite zone short names (replace EDT with whatever string you want)
    if ("EDT".equals(zoneAbbrev)) {
        zones[i][2] = "東部夏時間"; // change it to the short name for Standard Time
        zones[i][4] = "東部夏時間"; // change it to the short name for Daylight Saving Time
    }
}
symbols.setZoneStrings(zones);
dateFormat.setDateFormatSymbols(symbols);

我不知道应该是正确的字符串,所以我使用了与上面相同的字符串,但是您可以用正确的值替换它们:zones[i][2]包含EST的简称(标准时间(,zones[i][4]包含短名称对于EDT(日光保存时间(。

如果允许使用外部库,请使用apache commons dateutils方法:

public static Calendar toCalendar(Date date, TimeZone tz)

从您的日期中创建日历文档,然后对其进行操作。

相关内容

  • 没有找到相关文章

最新更新