Получите дату Хиджры от будущей григорианской даты - PullRequest
0 голосов
/ 26 мая 2018

Как я могу получить hijradate из кода ниже, но вместо сейчас () я хотел бы получить это из будущей даты.

java.time.chrono.HijrahDate hijradate = java.time.chrono.HijrahDate.now();
System.out.println("hijradate "+hijradate);

1 Ответ

0 голосов
/ 26 мая 2018

Это просто, когда вы знаете, как:

    LocalDate gregorianDate = LocalDate.of(2019, Month.FEBRUARY, 22);
    HijrahDate hijradate = HijrahDate.from(gregorianDate);
    System.out.println(hijradate);

Это напечатано

Hijrah-umalqura AH 1440-06-17

Если под григорианской датой вы имели в виду, что ваша дата была в объекте GregorianCalendar (обычно изустаревший API, который вы не можете изменить или не хотите изменять прямо сейчас):

    GregorianCalendar gregCal = // ...

    ZonedDateTime gregorianDateTime = gregCal.toZonedDateTime();
    System.out.println(gregorianDateTime);
    HijrahDate hijradate = HijrahDate.from(gregorianDateTime);
    System.out.println(hijradate);

Выход за один прогон на моем компьютере был:

2019-02-22T00:00+03:00[Asia/Riyadh]
Hijrah-umalqura AH 1440-06-17

РЕДАКТИРОВАТЬ: Для полноты картины приведу мой импорт, чтобы вы точно знали, какие классы я использую:

import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.chrono.HijrahDate;
import java.util.GregorianCalendar;

РЕДАКТИРОВАТЬ: Чтобы получить месяц, воспользуйтесь поисковой системой.Я использовал мой и нашел:

    int month = hijradate.get(ChronoField.MONTH_OF_YEAR);
    System.out.println(month);
    String formattedMonthName 
            = hijradate.format(DateTimeFormatter.ofPattern("MMMM", new Locale("ar")));
    System.out.println(formattedMonthName);

Это печатает

6
جمادى الآخرة

Последние строки вдохновлены этот ответ .

...