我想基于语言环境格式格式化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)
从您的日期中创建日历文档,然后对其进行操作。