Get Month Name of java.time.chrono.HijrahDate inst

2019-02-18 02:20发布

问题:

HijrahDate hd=HijrahChronology.INSTANCE.date(LocalDate.of(2014,11, 25));

If we have HijrahDate Instance , it is expected to have a method in UmalquraCalendar API that shows the name of month :

i inspect properties of this instance using groovy API :

['era':AH, 
'class':class java.time.chrono.HijrahDate, 
'prolepticMonth':17233,
 'eraValue':1,
 'dayOfWeek':2,
 'leapYear':false, 
'chronology':Hijrah-umalqura, 
'dayOfYear':32] 

However we don't find the month name which must be one of the following list items :

  1. Muḥarram (محرم meaning "forbidden"), so called because battle was forbidden (haram) during this month. Muharram includes the Day of Ashura.
  2. Ṣafar (صفر meaning "void"), supposedly named thus because pagan Arab houses were empty this time of year while their occupants gathered food.
  3. Rabīʿ I (Rabīʿ al-Awwal, ربيع الأوّل) meaning "the first spring".

  4. Rabīʿ II (Rabīʿ ath-Thānī ربيع الثاني or Rabīʿ al-Ākhir ربيع الآخ

..................... ............ so on SEE

Thus , since there is no attribute save month's name , it is expwcted to have a method retrieve this info ?

What's this method?

回答1:

The date does not contain information about the names of the months or days. To get that you need a formatter:

System.out.println(DateTimeFormatter.ofPattern("MMMM").format(hd));

prints Safar.



回答2:

Since the main language of UmalQura is the arabic langugage, Developers & programmers who uses UmalQuraCalender want to display the month in arabic. Thus , we base on @assylias answer we can add the Locale object to print صفر instead of Safar

System.out.println(DateTimeFormatter.ofPattern("MMMM").format(hd,new Locale("ar")));


回答3:

public String getIslamicDate(){
    return  DateTimeFormatter.ofPattern("MMMM",new Locale("ar")).format(HijrahDate.now());
}

I think this should work just fine and return the month in arabic language