第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java中將time4j轉(zhuǎn)換的中文日期格式化為公歷

Java中將time4j轉(zhuǎn)換的中文日期格式化為公歷

藍(lán)山帝景 2023-09-06 15:58:02
我正在 Java 中開發(fā)一個(gè)項(xiàng)目,我需要相互更改不同類型的日期,例如(公歷到中文,反之亦然,公歷到回歷,反之亦然)。我嘗試使用Time4j,它具有將不同類型的日期相互轉(zhuǎn)換的功能,但不幸的是,即使在嘗試閱讀其文檔后,我也不明白如何使用該庫(kù)?,F(xiàn)在我正在嘗試將公歷日期轉(zhuǎn)換為中國(guó)日期,但當(dāng)我使用它返回循環(huán)年份時(shí),我無(wú)法獲得中國(guó)日期的正常年份,但我需要像 2019 年這樣的正常年份。object.getYear()這是我的代碼:import net.time4j.PlainDate;import net.time4j.calendar.ChineseCalendar;public class DateConverter {static PlainDate gregorian = PlainDate.nowInSystemTime();static ChineseCalendar obj = gregorian.transform(ChineseCalendar.axis());public static void main(String[] args) {    String result = obj.getMonth() + "/" + obj.getDayOfMonth() + "/" + obj.getYear() ;    System.out.println(result);         // 8/30/ji-hai(36)    System.out.println(obj);            // chinese[ji-hai(2019)-8-30]}}我需要這種類型的年份ji-hai(2019),它采用默認(rèn)toString()方法,當(dāng)我使用 object.getYear()方法時(shí)它返回 ji-hai(36)?,F(xiàn)在如何將返回值從ji-hai(36)更改為ji-hai(2019)。另外,如果我想從用戶那里接收公歷日期,我應(yīng)該如何準(zhǔn)備此轉(zhuǎn)換?我可以將其作為字符串文本接收并將其轉(zhuǎn)換為公歷日期然后使用它嗎?有可能嗎?另外,如果您知道一個(gè)很好的資源,可以通過(guò)示例解釋 Time4j 的類和方法的用法,請(qǐng)與我分享。謝謝。
查看完整描述

1 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊

簡(jiǎn)短的解決方案:

我建議使用能夠處理中國(guó)日歷的專用格式引擎,而不是嘗試依賴toString()諸如此類的各種類型的方法。CyclicYearTime4J 有自己的基于ChronoFormatter類的格式引擎:

?ChineseCalendar obj = PlainDate.nowInSystemTime().transform(ChineseCalendar.axis());


? ? ChronoFormatter<ChineseCalendar> f =

? ? ? ? ChronoFormatter.ofPattern(

? ? ? ? ? "d/M/U(r)",?

? ? ? ? ? PatternType.CLDR,?

? ? ? ? ? Locale.ROOT,?

? ? ? ? ? ChineseCalendar.axis());


? ? System.out.println(f.print(obj));? ?

? ? // output today: 1/9/ji-hai(2019)

圖案與中國(guó)年:

我使用了模式“d/M/U(r)”。中國(guó)歷法的“正常”年份是由 CLDR 圖案符號(hào)“U”表示的循環(huán)年。循環(huán)年在 60 年后重復(fù),開始新的循環(huán)。年份的任何其他定義顯然都是不尋常的。這可能會(huì)讓西方用戶感到驚訝,因?yàn)樗麄兘?jīng)常期望以向前的方式計(jì)算任何類型的預(yù)兆年份。但是,Time4J 還支持其他兩種類型的年份。其中一個(gè)是現(xiàn)在僅具有歷史意義的時(shí)代年份。另一種類型的年份是相關(guān)的公歷年份(使用模式符號(hào)“r”)。其主要目的只是為了使循環(huán)年份明確。因此,許多人喜歡將中國(guó)年份構(gòu)造為循環(huán)年份和相關(guān)公歷年份的組合,形式如下:


U(r) or r(U)

甚至可以確定十二年后重復(fù)出現(xiàn)的十二生肖。假設(shè)您有一個(gè)中國(guó)日歷對(duì)象,您可以通過(guò)以下方式確定十二生肖:


? ? String zodiac = obj.getYear().getZodiac(Locale.ENGLISH);

? ? System.out.println("Year of " + zodiac); // Year of Pig

反向方式(解析并轉(zhuǎn)換為公歷):

只需使用上面定義的格式化程序,然后解析:


? ? PlainDate gregorian = f.parse("1/9/ji-hai(2019)").transform(PlainDate.axis());

? ? System.out.println(gregorian); // output: 2019-09-29

關(guān)于轉(zhuǎn)錄:

我使用根區(qū)域設(shè)置來(lái)構(gòu)建格式化程序。它以簡(jiǎn)單的拉丁字母生成循環(huán)年份,沒有任何變音符號(hào)。如果您可能想使用官方拼音轉(zhuǎn)錄,您可以應(yīng)用英語(yǔ)區(qū)域設(shè)置。循環(huán)年份將顯示為“jǐ-hài”。中文(韓語(yǔ)和日語(yǔ)也使用相同的腳本)、越南語(yǔ)和俄語(yǔ)支持使用其他文字的特殊轉(zhuǎn)錄。


Time4J 的 API 文檔可以在網(wǎng)上找到。該文檔已經(jīng)包含格式化和解析中國(guó)日歷的示例。但我歡迎任何進(jìn)一步的貢獻(xiàn)或改進(jìn)它的具體建議。


查看完整回答
反對(duì) 回復(fù) 2023-09-06
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)