Die Anleitung zu Java HijrahDate
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.
- JapaneseDate
- MinguoDate
- ThaiBuddhistDate
- LocalDate
- LocalDate
- Temporal
- TemporalAdjuster
- TemporalAccessor
- ChronoLocalDate
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.)
- Die Anleitung zu Java HijrahChronology
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 |
Die Anleitungen Java Date Time
- Die Anleitung zu Java ZoneId
- Die Anleitung zu Java Temporal
- Die Anleitung zu Java Period
- Die Anleitung zu Java TemporalAdjusters
- Die Anleitung zu Java MinguoDate
- Die Anleitung zu Java TemporalAccessor
- Die Anleitung zu Java JapaneseEra
- Die Anleitung zu Java HijrahDate
- Die Anleitung zu Java Date Time
- Was ist Sommerzeit (DST)?
- Die Anleitung zu Java LocalDate
- Die Anleitung zu Java LocalTime
- Die Anleitung zu Java LocalDateTime
- Die Anleitung zu Java ZonedDateTime
- Die Anleitung zu Java JapaneseDate
- Die Anleitung zu Java Duration
- Die Anleitung zu Java TemporalQuery
- Die Anleitung zu Java TemporalAdjuster
- Die Anleitung zu Java ChronoUnit
- Die Anleitung zu Java TemporalQueries
Show More
- Anleitungen Java Web Services
- Anleitungen Java Servlet/JSP
- Die Anleitungen JavaFX
- Anleitungen Java SWT
- Die Anleitungen Oracle Java ADF
- Java Grundlagen
- Die Anleitungen Java Collections Framework
- Die Anleitungen Java IO
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Boot
- Anleitungen Spring Cloud
- Anleitungen Maven
- Anleitungen Gradle