![](/img/trans.png)
[英]How to get Exact day difference between two dates in java or groovy?
[英]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.