如何检测Hijri日期?
作者:互联网
任何人都可以告诉一个好方法来判断作为字符串的日期是否为Hijri格式?任何自动检测字符串日期类型(Hijri)的好解决方案?
初步工作或思考:
我们可以检查年份从14或13开始像Hijri年份那样等. “1435” ..
我知道用于转换的Java JODA API:
//Convert Georgian to Hijri
DateTime dtISO = new DateTime(2014,2,25,0,0,0,0);
DateTime dtIslamic = dtISO.withChronology(IslamicChronology.getInstance());
String formatIslamic= "dd-MMMM-yyyy";
DateTimeFormatter formatter = DateTimeFormat.forPattern(formatIslamic).withChronology( IslamicChronology.getInstance());
String islamicDateString = formatter.print(dtIslamic);
System.out.println(islamicDateString);
//Convert Hijri to Georgian :
Chronology iso = ISOChronology.getInstanceUTC();
Chronology hijri = IslamicChronology.getInstanceUTC();
DateTime dtHijri = new DateTime(1435,04,24,00,00,hijri);
DateTime dtIso = new DateTime(dtHijri, iso);
System.out.println(dtIso);
解决方法:
据我所知,区分Hijri日期和格里高利日期的唯一真正方法是提供的年份.对于大多数应用来说,这可能是足够的,但对于其他应用来说,它几乎没用. Hijri使用日/月/年格式.正如你已经知道的那样,试图区分第二个月和第二天是没有意义的,所以你可以忘记这一点,但区分Hijri年和格里高利年有类似的问题……克里斯托弗·哥伦布漂进来并向北方倾斜在格里高利时,土地于1492年,但在希吉里的1492年是2069年.
这就是我想要建立一套规则的问题.如果代码只是为了接受Hijri日期,那么请确保用户只能提供Hijri日期,反之亦然,以提供格里高利日期.如果Hijri日期格式是预期的,有人提供2016年,那么这显然是错误的,因为2016年Hijri实际上是2577年.如果你问我,这将是一个很小的未来.
用户提供日期后退或前进多远? Gregorian 2016与等效的Hijri 1437(579年的差异)之间的差异非常大,您可以对实际提供的日期格式建立自信的解释并进行必要的转换.然而,尽管如此,一个应用程序可接受的内容可能对另一个应用程序不可接受.
标签:java,datetime-format,jodatime,hijri 来源: https://codeday.me/bug/20190528/1167958.html