7
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?

Abdennour TOUMI
  • 87,526
  • 38
  • 249
  • 254

3 Answers3

8

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.

assylias
  • 321,522
  • 82
  • 660
  • 783
  • what to do if we want to show __Safar 14-1444__ – Mohd Qasim Mar 02 '23 at 04:30
  • 1
    Change the pattern to get the format you need. See: https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/time/format/DateTimeFormatter.html – assylias Mar 02 '23 at 08:19
  • 1
    appreciate your response. Above reference help me to do so __DateTimeFormatter.ofPattern("MMMM-dd-yyyy").format(hidate)__ – Mohd Qasim Mar 03 '23 at 18:37
4

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")));
Abdennour TOUMI
  • 87,526
  • 38
  • 249
  • 254
1
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