有谁能说出一种很好的方法来检测以字符串形式出现的日期是否为Hijri格式?有什么好的解决方案可以自动检测字符串日期类型(Hijri)?
最初的工作或想法:我们可以检查这一年从14岁或13岁开始,就像Hijri年是“1435年”。
我知道Java的两种转换方式:
//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);发布于 2016-01-19 15:31:42
据我所知,区分Hijri日期和Gregorian日期的唯一真正方法是按提供的年份。对于大多数应用程序来说,这可能是足够的,但对于其他应用程序来说,这几乎是无用的。Hijri使用day/month/year格式。正如你已经知道的,试图区分第二个月和第二天是没有意义的,所以你可以忘记这一点,但是把Hijri年和公历年区分开来也有类似的问题.1492年,克里斯托弗·哥伦布在北美的土地上漂流而下,但1492年的希里是2069年的格里高利。
我想这都是建立一套规则的问题。如果代码只接受Hijri日期,那么确保用户只能提供Hijri日期,反之亦然。如果期待Hijri日期格式,并有人提供2016年的一年,那么这显然是错误的,因为2016年在Hijri实际上是2577年。如果你问我的话,这是一个很遥远的未来。
用户可以提供多远的日期?格列高利2016和1437年同等的Hijri (相差579年)之间的差别足够大,你可以建立一个自信的解释,哪一个日期格式是实际提供的,并进行必要的转换。话虽如此,一项申请所可接受的,可能不会为另一项申请所接受。
https://stackoverflow.com/questions/34879127
复制相似问题