如何在java.text.DateFormat中使用不受支持的区域设置
我正在尝试获取巴基斯坦地区“en_PK”的日期格式,即“dd/MM/yy” 上面的代码段返回“MM/dd/yy” 但是区域设置似乎不受支持,并且在如何在java.text.DateFormat中使用不受支持的区域设置,java,date,locale,date-format,Java,Date,Locale,Date Format,我正在尝试获取巴基斯坦地区“en_PK”的日期格式,即“dd/MM/yy” 上面的代码段返回“MM/dd/yy” 但是区域设置似乎不受支持,并且在DateFormat.getAvailableCales()列表中不可用 请建议解决此问题的理想方法。请提前感谢。在导航DateFormat.getAvailableCales()时,使用Locale对象搜索国家名称,并在找到后中断循环 import java.text.DateFormat; import java.time.LocalDate; i
DateFormat.getAvailableCales()
列表中不可用
请建议解决此问题的理想方法。请提前感谢。在导航
DateFormat.getAvailableCales()
时,使用Locale
对象搜索国家名称,并在找到后中断循环
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.FormatStyle;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Locale localePk = null;
for (Locale locale : DateFormat.getAvailableLocales()) {
if (locale.getDisplayCountry().equals("Pakistan")) {
localePk = locale;
break;
}
}
if (localePk != null) {
String datePattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT, null,
IsoChronology.INSTANCE, localePk);
System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern(datePattern, localePk)));
}
}
}
输出:
10/10/2020
10/10/2020
请注意,DateTimeFormatterBuilder
是的一部分
如果您是为您的Android项目执行此操作,并且您的Android API级别仍然不符合Java-8,请检查并重试
java.util
date-time类已经过时且容易出错,它们的格式化API也是如此,DateFormat
。但是,如果您仍在寻找使用这些遗留API的解决方案,下面给出一个:
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Locale localePk = null;
for (Locale locale : DateFormat.getAvailableLocales()) {
if (locale.getDisplayCountry().equals("Pakistan")) {
localePk = locale;
break;
}
}
if (localePk != null) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, localePk);
System.out.println(df.format(new Date()));
}
}
}
输出:
10/10/2020
10/10/2020
您可以编写一个返回格式化日期的包装类。当区域设置可用时使用它,当区域设置不存在时使用特定的DateTimeFormatter。OP提到的问题是如何从
DateFormat.GetAvailableCales()
列表中查找Pakistan
的区域设置,请重新打开它。