codestory

Die Anleitung zu Java HijrahDate

View more Tutorials:

Folge uns auf unserer fanpage, um jedes Mal benachrichtigt zu werden, wenn es neue Artikel gibt. Facebook

1- HijrahDate

Die Klasse HijrahDate repräsentiert Daten im Kalendersystem Hijrah, allgemein bekannt als islamischer oder arabischer Kalender, ein Kalendersystem, das auf dem Mondkalender basiert und aus 12 Mondmonaten mit 354 oder 355 Tagen besteht. Es wird verwendet, um islamische Feiertage wie die jährliche Fastenzeit oder das Ereignis Hijrah zu identifizieren.
Der islamische Kalender verwendet die Hijrah-Ära, die dem Jahr 622 des Kalenders Gregorian (auch bekannt als ISO) entspricht. In diesem Jahr wanderten Muhammad und seine Anhänger von Mecca nach Yathrib (heute Medina) aus und gründeten die erste muslimische Gemeinschaft, ein Ereignis, das als Hijrah gefeiert wird. Im Westen wird diese Ära oft als AH (im lateinisch als Anno Hegirae) bezeichnet. In muslimischen Ländern wird es manchmal auch als H bezeichnet. Im Englischen wird die Zeit vor der Hijrah als BH (Before Hijrah) bezeichnet.
Der 1. Januar vom Jahr 1 im Kalender Hijrah, entspricht dem 16. Juli 622. Die folgende Website bietet ein Online-Tool, das Ihnen hilft, Daten im Kalender Hijrah in den Kalender Gregorian umzuwandeln und umgekehrt:
Gregorian (ISO) Hijrah
622-07-16 1-01-01
2000-01-01 1420-09-24
Year
Ein Jahr im islamischen Kalender hat etwa 354 oder 355 Tage, d.h 11 Tage kürzer als der Kalender Gregorian.
Ungefähre Formel zur Umrechnung des Kalenderjahres Hijrah (AH) in das Kalenderjahr Gregorian (CE) und umgekehrt:

AH = (CE − 622) × 33 ÷ 32

CE = AH + 622 − (AH ÷ 32)
Month
Der islamische Kalender hat 12 Monate mit 29 oder 30 Tagen. Wenn die Mondsichel am Abend des 29. Tages kurz nach Sonnenuntergang sichtbar ist, ist der folgende Tag der erste Tag des neuen Monats. Erfolgt keine Sichtung, wird dem aktuellen Monat ein 30. Tag hinzugefügt, gefolgt vom ersten Tag des Folgemonats
Die traditionelle Version des islamischen Kalenders erfordert, dass eine autorisierte Person oder ein autorisiertes Komitee eine tatsächliche Sichtung der Mondsichel macht, um die Länge jedes Monats zu bestimmen.
Diese Abhängigkeit von astronomischen Beobachtungen macht es schwierig, die Länge der islamischen Monate vorherzusagen. Wolken und andere ungünstige atmosphärische Bedingungen können eine ansonsten sichtbare Mondsichel verdecken. In diesem Fall kann der Monat um einen Tag verlängert werden, wodurch sowohl der Beginn des neuen Monats als auch die damit verbundenen Ereignisse verzögert werden. Aus diesem Grund können sich die Termine für muslimische Feiertage kurzfristig ändern.
Einige Länder und muslimische Gemeinschaften verwenden jetzt modifizierte Versionen des traditionellen Kalenders, die das Timing der islamischen Monate und Feiertage einfacher vorhersagen sollen.
Ein neuer Monat kann auch an verschiedenen Tagen in verschiedenen Ländern beginnen. Da die Monduntergangszeit an einem Ort von seinem Längengrad abhängt, können ein neuer Monat und wichtige religiöse Rituale wie das Fasten im Ramadan beispielsweise in westafrikanischen muslimischen Ländern einen Tag früher beginnen als in Indonesien oder Malaysia.
Namen der Monate im Kalender Hijrah:
Months ISO Months Hijrah Months
1 January Muharram
2 February Safar
3 March Rabi Al-Awwal
4 April Rabi Al-Thani
5 May Jumada Al-Awwal
6 June Jumada Al-Thani
7 July Rajab
8 August Sha`ban
9 September Ramadan
10 October Shawwal
11 November Dhul-Qa`dah
12 December Dhul-Hijjah
Namen der Wochentage:
  English Day-Of-Week Hijrah Day-Of-Week
1 Sunday Al-Ahad
2 Monday Al-Ithnayn
3 Tuesday Al-Thulathaa
4 Wednesday Al-Arbo’aa
5 Thursday Al-Khamees
6 Friday Al-Jum’ah
7 Saturday Al-Sabt
    
Weitere Erläuterungen zu den Namen der einzelnen Monate und Wochentage im Kalendersystem Hijrah:

2- Basic Example

Grundsätzlich hat der islamische Kalender viele Variationen, weil viele Länder und viele Sekten ihn verwenden. Die Klasse HijrahDate unterstützt mehrere davon. Wichtig ist, dass Sie Java konfigurieren können, um neue Varianten hinzuzufügen.
Die in Java unterstützte Standardvariante ist "islamic-umalqura" - Saudi-Arabischer Umm Al-Qura Islamischer Kalender. (Weitere Informationen finden Sie in der Klasse HijrahChronology.)
  • TODO Link?
Zum besseren Verständnis analysieren wir das folgende Beispiel (mit der standardmäßigen islamischen Kalendervariante):
HijrahDate_default_variant_ex1.java

LocalDate localDate = LocalDate.of(2000, 1, 1);
HijrahDate hijrahDate = HijrahDate.from(localDate);

System.out.printf("localDate: %s%n", localDate); // 2000-01-01
System.out.printf("hijrahDate: %s%n%n", hijrahDate); // Hijrah-umalqura AH 1420-09-24

HijrahEra era = hijrahDate.getEra(); // HijrahEra.AH
System.out.printf(" > era.name(): %s%n%n", era.name()); // AH

HijrahChronology chronology = hijrahDate.getChronology();
System.out.printf(" > chronology.getId(): %s%n", chronology.getId()); // Hijrah-umalqura
System.out.printf(" > chronology.getCalendarType(): %s", chronology.getCalendarType()); // islamic-umalqura
Output:

localDate: 2000-01-01
hijrahDate: Hijrah-umalqura AH 1420-09-24

 > era.name(): AH

 > chronology.getId(): Hijrah-umalqura
 > chronology.getCalendarType(): islamic-umalqura
Der Text, der ein HijrahDate darstellt, besteht aus 3 Teilen:
Chronology ID:
(Chronology Identifier): Ermöglicht die Angabe der zu verwendenden Variante. Die Kalendersysteme Gregorian (ISO) und Japanese haben keine Variation, daher werden diese Informationen nicht angezeigt.
Era Name:
(Era Name): Es wird nur eine Epoche unterstützt, die HijrahEra.AH ist.
Date:
Die Datum Information

3- Supported Range Example

In der Praxis schränkt das Kalendersystem Hijrah zwar den Datumsbereich nicht ein, aber Java unterstützt es nur in geringem Umfang, nämlich:
(**) Test with Java 11.
  Hijrah Date ISO Date
From Hijrah-umalqura AH 1300-01-01 1882-11-12
To Hijrah-umalqura AH 1600-12-30 2174-11-25
Das folgende Beispiel wird verwendet, um das kleinste und das größte Datum im von Java unterstützten Hijrah-Kalendersystem zu finden.
HijrahDate_date_range_ex1.java

package org.o7planning.hijrahdate.ex;

import java.time.LocalDate;
import java.time.chrono.Chronology;
import java.time.chrono.HijrahChronology;
import java.time.chrono.HijrahDate;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.ValueRange;

public class HijrahDate_date_range_ex1 {
    public static void main(String[] args) {
        Chronology chronology = HijrahChronology.INSTANCE;
        ValueRange range = chronology.range(ChronoField.YEAR);
        int minYear = (int) range.getMinimum();
        int maxYear = (int) range.getMaximum();

        System.out.println("minYear: " + minYear);
        System.out.println("maxYear: " + maxYear);

        // ----- Find the first supported date --------
        // A Hijrah Month have 29 or 30 days.
        HijrahDate hijrahDate = null;
        try {
            hijrahDate = HijrahDate.of(minYear, 12, 30);
        } catch (Exception e) {
            hijrahDate = HijrahDate.of(minYear, 12, 29);
        }
        HijrahDate firstDate = hijrahDate.with(TemporalAdjusters.firstDayOfYear());
        System.out.println("First date: " + firstDate + " --> " + LocalDate.from(firstDate));

        // ----- Find the last supported date --------
        hijrahDate = HijrahDate.of(maxYear, 1, 1);

        hijrahDate.range(ChronoField.DAY_OF_YEAR);
        HijrahDate lastDate = hijrahDate.with(TemporalAdjusters.lastDayOfYear());
        System.out.println("Last date: " + lastDate + " --> " + LocalDate.from(lastDate));
    }
}
Output:

minYear: 1300
maxYear: 1600
First date: Hijrah-umalqura AH 1300-01-01 --> 1882-11-12
Last date: Hijrah-umalqura AH 1600-12-30 --> 2174-11-25

4- Month Length Example

Beispiel: Schauen Sie die Länge von Monaten von einigen Jahren an (Standardvariante - Der Umm Al-Qura Islamischer Kalender von Saudi Arabien).
HijrahDate_monthLength_ex1.java

int[] hijrahYears = new int[] { 1441, 1442, 1443, 1444, 1445 };

HijrahDate hijrahDate = HijrahDate.of(hijrahYears[0], 1, 1);
System.out.println("Hijrah Year: " + hijrahYears[0]); // 1441
System.out.println("ISO Year: " + LocalDate.from(hijrahDate).getYear()); // 2019
System.out.println();

for (int month = 1; month <= 12; month++) {
    for (int hijrahYear : hijrahYears) {
        hijrahDate = HijrahDate.of(hijrahYear, month, 1);

        System.out.printf("Year: %s  Month: %s  --> %d%n", hijrahYear, month, hijrahDate.lengthOfMonth());
    }
}
Output:
Year 1441 1442 1443 1444 1445
Month  
1 30 29 30 29 29
2 29 30 29 30 30
3 30 29 30 29 30
4 29 30 29 30 30
5 30 29 30 30 29
6 30 30 29 29 30
7 29 29 30 29 29
8 30 30 29 30 29
9 30 30 30 29 30
10 29 29 29 30 29
11 30 30 30 29 29
12 29 29 30 30 30

View more Tutorials:

Vielleicht bist du interessiert

Das sind die Online-Courses außer der Website o7planning, die wir empfehlen. Sie können umsonst sein oder Discount haben.