程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 9的日期時間格式化趨近Unicode區域設置標准

Java 9的日期時間格式化趨近Unicode區域設置標准

編輯:關於JAVA

Java 9的日期時間格式化趨近Unicode區域設置標准。本站提示廣大學習愛好者:(Java 9的日期時間格式化趨近Unicode區域設置標准)文章只能為提供參考,不一定能成為您想要的結果。以下是Java 9的日期時間格式化趨近Unicode區域設置標准正文



    一系列在解析和格式化上的改進已集成到Java 9中,這些改進讓相關功能更趨近於Unicode區域設置數據標記語言(LDML,Locale Data Markup Language)。上述改進由Stephen Colebourne負責,他是被廣為采用的日期時間庫JodaTime的創建者,還先導了Java 8中新java.time組件。遵循Unicode標准將為Java 9提供與其他非Java系統間更好的互操作性。
    LDML是Unicode通用區域設置數據資源庫 (CLDR,Common Locale Data Repository)所使用的語言。作為Unicode聯盟的項目之一,CLDR用於從世界各地收集並存儲區域設置數據,這樣應用開發人員可使程序更好地適應不同的文化。特別需要說明的是,LDML可解決日期、時間和時區上的問題,尤其是日期的格式化與解析。下面列出一些從Java 9中抽出的新特性,這些新進入Java 9的特性使得java.time更趨近LDML規范。
    1.JDK-8148947,DataTimeFormatter的模式字母“g”:正如在LDML中定義的,字母“g”指代一個“簡化儒略日期”,簡化儒略日期與正常儒略日期的差別在於:(1)簡化儒略日期取決於本地時間,而非GMT;(2)簡化儒略日期中將午夜作為天的劃分,而不是中午。
    2.JDK-8155823,添加了日期時間模式“v”和“vvvv”:LDML格式“v”用於表示“通用非位置格式”(Generic Non-Location Format),例如“太平洋時間”。而LDML格式“vvvv”表示由特定城市所定義的“通用位置格式”(Generic Location Format),例如“洛杉矶時間”。
    3.JDK-8148949,DataTimeFormatter的模式字母“A”、“n”、“N”:雖然不同於“n”和“N”,“A”是在LDML中定義的,但是當前Java的行為並未遵循LDML規范。規范中使用“A”表示一天中已過去的時間,以毫秒為單位,表示值的寬度可變。但是當前Java實現為固定寬度,即模式“AA”將不能解析任何大於99毫秒的值。“n”和“N”是Java對規范的一個擴展,分別表示一秒中已過去的納秒值,以及一天中已過去的納秒值。
    4.JDK-8079628,包含“DD”格式的java.time.format.DateTimeFormatter對象在處理三位的積日值(Day-of-Year)時發生失敗:類似於上面的固定寬度問題,只是用‘D’表示一位積日值。模式“DD”無法將“123”解析成一年中的第123天。
    如上所述,Java 9更好地看齊LDML將會簡化整個系統中的互操作性,這是由於不少技術已在不同程度上采用了LDML。稍提一些,Microsoft .Net使用LDML進行常規的區域設置數據互換,Node.js和Ruby也具有可用的軟件包。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved