我正在使用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);
答案 0 :(得分:1)
java.time.chrono.HijrahDate.from(
LocalDate.of( 2014 , 2 , 25 )
)
.get( ChronoField.YEAR )
1435
Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。
java.time 类在HijrahChronology
包中提供HijrahDate
和java.time.chrono
。
对于Java 6& 7,对于早期的Android,ThreeTen-Backport项目还提供了HijrahChronology
和HijrahDate
。
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 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance 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的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。