簡體   English   中英

我將如何格式化不同語言的日期以獲得當前日期和未來日期之間的差異?

[英]How would I format dates of different languages to get the difference between the current day and a day in the future?

所以目標是能夠獲取當前日期(沒問題)並將其與進入的日期進行比較,該日期可以是當前日期也可以是未來的日期。 不僅如此,由於其他語言如何寫出或構造日期,輸入的日期字符串可能會根據語言在格式方面發生變化。

如果設備設置為英語,則字符串如下所示:

“2023 年 1 月 30 日,星期一”

但是,如果設備設置為法語,則字符串如下所示:

“隆迪 2023 年 1 月 30 日”

...和這樣的西班牙語:

"lunes, 30 de enero de 2023"

... 等等。 意大利語略有不同,我也試過德語,也略有不同。

我確實嘗試過使用 DateFormat.LONG 和 Locale.getDefault() 作為參數的 DateFormat(這樣它就會始終使用設備設置的區域設置,並且始終會獲得完整的日期)但是它會拋出一個“無法解析的日期”錯誤語言,甚至是英文字符串。

我將如何獲取上面的任何給定字符串並以我可以將日期與當前日期(如 LocalDate.now() 之類的值)進行比較的方式格式化它們? 是否有跨語言的總體方法,或者我是否需要為所有這些創建格式? 目的是查看要求的日期距當前日期有多遠,以調整我的應用程序中可見的內容(基於天數完成 - 要求的日期距當前日期 3 天?4 天?5 天?) .

在此先感謝您提供的所有幫助和見解!

您必須為每種語言 (Locale) 配置日期模式 => 這 output 正是您想要的,請嘗試根據您的 function 需求進行調整:

public static void main(String[] args) {
        Locale enLocale = Locale.UK;
        String datePatternForEn = "EEEE', 'MMMM', 'dd yyyy";
        Locale frLocale = Locale.FRANCE;
        String datePatternForFr = "EEEE dd MMMM yyyy";
        Locale spLocale = new Locale("es", "ES");
        String datePatternForSp = "EEEE',' dd' de 'MMMM' de 'yyyy";
        DateTimeFormatter englishDateFormat = DateTimeFormatter.ofPattern(datePatternForEn, enLocale);
        DateTimeFormatter frenchDateFormat = DateTimeFormatter.ofPattern(datePatternForFr, frLocale);
        DateTimeFormatter spanishDateFormat = DateTimeFormatter.ofPattern(datePatternForSp, spLocale);
        System.out.println(LocalDate.now().format(englishDateFormat));
        System.out.println(LocalDate.now().format(frenchDateFormat));
        System.out.println(LocalDate.now().format(spanishDateFormat));
    }

暫無
暫無

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

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