从未来的公历日期获取回历日期
Get Hijri date from future Gregorian date
我如何从下面的代码中获取 hijradate 而不是 now() 我想从未来的日期获取它。
java.time.chrono.HijrahDate hijradate = java.time.chrono.HijrahDate.now();
System.out.println("hijradate "+hijradate);
知道怎么做就很简单了:
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
جمادى الآخرة
最后几行的灵感来自this answer。
我如何从下面的代码中获取 hijradate 而不是 now() 我想从未来的日期获取它。
java.time.chrono.HijrahDate hijradate = java.time.chrono.HijrahDate.now();
System.out.println("hijradate "+hijradate);
知道怎么做就很简单了:
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
جمادى الآخرة
最后几行的灵感来自this answer。