簡體   English   中英

如何在 java.text.DateFormat 中使用不受支持的語言環境

[英]How to use Unsupported Locales in java.text.DateFormat

我正在嘗試獲取巴基斯坦語言環境“en_PK”的日期格式,即“”dd/MM/yy”

Locale localePK = new Locale("en", "PK");
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, localePK);

上面的代碼片段返回“MM/dd/yy”

但是該語言環境似乎不受支持,並且在DateFormat.getAvailableLocales()列表中不可用。

請提出解決此問題的理想方法。 提前致謝。

在導航DateFormat.getAvailableLocales()時使用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

請注意, DateTimeFormatterBuilder現代日期時間 API 的一部分

如果您正在為您的 Android 項目執行此操作,並且您的 Android API 級別仍然不符合 Java-8,請查看 通過脫糖可用的 Java 8+ API如何在 Android 項目中使用 ThreeTenABP

java.util日期時間類已經過時且容易出錯,它們的格式化 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM