伊斯兰日期的Joda-Time格式

时间:2014-02-25 10:40:24

标签: java date jodatime

我正在使用Joda-Time获取dd MMMM yyyy中的Islamic date,但我总是得到dd MM yyyy。

有什么建议吗?可能是Hijri日期不支持格式化吗?在Joda-Time网站上还不清楚。

 DateTime dtISO = new DateTime(2014,2,25,0,0,0,0);
 DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance());
 String formatIslamic= "dd MMMM yyyy";
 DateTimeFormatter formatter = DateTimeFormat.forPattern(formatIslamic).withChronology( IslamicChronology.getInstance());
 String islamicDateString = formatter.print(dtIslamic);

1 个答案:

答案 0 :(得分:1)

TL;博士

java.time.chrono.HijrahDate.from(
    LocalDate.of( 2014 , 2 , 25 ) 
)
.get( ChronoField.YEAR )
  

1435

java.time

Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。

java.time 类在HijrahChronology包中提供HijrahDatejava.time.chrono

对于Java 6& 7,对于早期的Android,ThreeTen-Backport项目还提供了HijrahChronologyHijrahDate

LocalDate ld = LocalDate.of( 2014 , 2 , 25 ) ;
HijrahDate hd = HijrahDate.from( ld  );
String output = hd.toString() ;
  

输出:Hijrah-umalqura AH 1435-04-25

对于其他格式,带有format的{​​{1}}方法似乎还要转换为ISO年表。

DateTimeFormatter
  

输出2:2014年2月25日,星期二

虽然我目前没有时间这样做,但我建议查看HijrahDate::toString方法的源代码。

您可以使用java.time.chrono包文档中的示例代码来滚动自己的格式。

Locale locale = Locale.forLanguageTag( "en-US-u-ca-islamic-umalqura" );
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL ).withLocale( locale );
String output2 = hd.format( f );
  

Hijrah-umalqura 2 25-4-1435

另见:

Convert Jalali calendar to Georgian in java

Get a gregorian date from Hijri date strings

关于 java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要int day = hd.get( ChronoField.DAY_OF_MONTH ); int dow = hd.get( ChronoField.DAY_OF_WEEK ); int month = hd.get( ChronoField.MONTH_OF_YEAR ); int year = hd.get( ChronoField.YEAR ); System.out.printf( "%s %s %d-%s-%d%n" , hd.getChronology().getId() , dow , day , month , year ); 类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore