我正在為一家埃塞俄比亞公司開發一款安卓應用程式,必須處理日期問題。
埃塞俄比亞使用的日歷與公歷相似,但有兩個主要區別:它比公歷早7年,有13個月。 在我發布這個問題的時候,公歷的日期是2021年9月13日,而埃塞俄比亞的日歷是2014年1月3日。
我的問題是:
安卓系統是否支持埃塞俄比亞日歷,埃塞俄比亞的人們是否習慣于讓他們的設備使用埃塞俄比亞日歷?
如果是的話,我是否必須獲得默認的格式化(即使用默認的日歷。
Calendar.getInstance()),以便正確格式化日期?相反,如果設備使用公歷,Java如何支持翻譯成埃塞俄比亞的日期?
為了模擬完整的場景,您建議將設備設定為適當的當前埃塞俄比亞日期(就像來自網路提供商)和區域設定?
uj5u.com熱心網友回復:
雖然我對這些日歷系統一無所知,但也許......
ThreeTen-Extra將ThreeTen-Extra庫添加到您的專案中,以訪問EthiopicChronology類,該類插入與Android捆綁的java.time框架。
這個年表定義了埃塞俄比亞日歷系統的規則。這個日歷系統主要在埃塞俄比亞使用。日期的排列方式是:0001-01-01(埃塞俄比亞語)是0284-08-29(ISO)。
你也可以在那里找到一個CopticChronology類。
uj5u.com熱心網友回復:
關于歷法背景:
埃塞俄比亞日歷是一個在埃塞俄比亞本身具有一定知名度的地方日歷。是的,這個國家甚至有一種特殊的計時模式,從早上6點開始一天的作業。然而,我不確定該日歷是否也在手機上廣泛傳播,因為安卓、IOS或Windows等常見作業系統缺乏足夠的支持。在埃塞俄比亞之外,它可能只與散居國外的有宗教信仰的埃塞俄比亞人有關。
安卓上的支持:
你可以找到一些由IBM提供的EthiopicCalendar類提供的支持。我強烈認為阿姆哈拉語數字是被支持的(但并不完全確定)。我對支持早上6點作為一天的開始和以0為單位進行計數不太有信心(如果你問的是當前日期的話)。IBM說(與Calendar.getInstance()的標準用法類似,但不完全相同):
EthiopicCalendar通常應該用以下方法來實體化 Calendar.getInstance(ULocale)來實體化,并在ULocale中加入一個標簽 "@calendar=ethiopic"。
IBM的API通過自1970-01-01T00:00Z起計算的毫秒,提供了對格里高利歷的翻譯,反之亦然。對于格式化或決議,請使用IBM的專用格式化引擎。注意,它不是Android的標準格式化引擎。當然,你仍然要擔心一些奇怪的功能,比如把第一個月算作零(而不是一)。
替代庫Time4A:
。我的庫Time4A也是為Android撰寫的,是主庫Time4J的一個姐妹專案。這兩個庫都包含EthiopianCalendar和EthiopianTime類。你可以在javadoc中找到一些代碼示例。也存在對非十進制阿姆哈拉語數字的支持。這些類也需要一個特殊的格式化引擎,叫做ChronoFormatter。就像IBM的情況一樣,埃塞俄比亞的月份名稱如Meskerem(即使是阿姆哈拉語或其他語言)也得到了良好的支持。
轉換為格雷戈里歷(反之亦然)可以通過運算式ethiopianDate.transform(PlainDate.axis())獲得,其中引數表示目標日歷(這里,PlainDate是格雷戈里型別)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311914.html
標籤:
下一篇:gRPC,爆贊
