簡體   English   中英

如何本地化Java Calendar類?

[英]How to localize Java Calendar class?

是否可以本地化Java日歷類以將當前系統日期轉換為例如Jalali(波斯)日期?

例如,創建實例時,您可以傳遞Locale

Calendar.getInstance(Locale.US);

本土化

如何本地化Java Calendar類?

你不知道 而是,您本地化了ZonedDateTime對象。

糟糕的Calendar類,實際上是GregorianCalendar ,被ZonedDateTime類取代了很多年。 Java最早版本中所有糟糕的舊日期時間類( DateCalendarSimpleDateFormatjava.sql.Timestampjava.sql.Date等)都被現代的java.time類淘汰了。

您可以通過調用添加到舊類的新方法,輕松地將舊類轉換為現代類。

ZonedDateTime zdt = ( ( GregorianCalendar ) myCalendar ).toZonedDateTime() ;

現在,讓DateTimeFormatter自動本地化,同時生成一個以文本形式表示日期時間值的String

要本地化,請指定:

  • FormatStyle確定字符串應為多長時間或縮寫。
  • 確定Locale
    • 用於翻譯日名,月名等的人工語言
    • 文化規范決定縮寫,大寫,標點,分隔符等問題。

例:

Locale l = Locale.CANADA_FRENCH ; 
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL )
                                       .withLocale( l ) ;
String output = zdt.format( f ) ;

賈拉利歷法

將當前系統日期轉換為例如Jalali(波斯)日期

Java確實與Hijrah日歷系統的Chronology實現捆綁在一起: HijrahChronology 也許這可能滿足您的需求(我幾乎不了解ISO 8601以外的時間順序)。

您可以通過搜索Stack Overflow來了解更多信息。

如果該實現無法滿足您的需求,那么您可能會在其他地方找到一個或自行開發。 除了與Java捆綁在一起的幾種開源年表,您還可以在ThreeTen-Extra項目中找到更多開源的年表。 您可能會從其他來源找到其他人。


關於java.time

java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊的舊式日期時間類,例如java.util.DateCalendarSimpleDateFormat

現在處於維護模式Joda-Time項目建議遷移到java.time類。

要了解更多信息,請參見Oracle教程 並在Stack Overflow中搜索許多示例和說明。 規格為JSR 310

您可以直接與數據庫交換java.time對象。 使用與JDBC 4.2或更高版本兼容的JDBC驅動程序 不需要字符串,不需要java.sql.*類。

在哪里獲取java.time類?

ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可以在這里找到一些有用的類,比如IntervalYearWeekYearQuarter ,和更多

暫無
暫無

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

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