4

文字列として来る日付がイスラム暦形式であることを検出する良い方法を誰か教えてもらえますか? String Date 型 (Hijri) を自動的に検出する良い解決策はありますか?

最初の仕事または考え: イスラム暦の年は「1435」などであるため、年が 14 または 13 などから始まることを確認できます。

私は両方の方法で変換するための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);
4

1 に答える 1

6

私が知る限り、ヒジュラ暦の日付とグレゴリオ暦の日付を区別する唯一の実際の方法は、提供された年によるものです。ほとんどのアプリケーションではおそらくこれで十分ですが、他のアプリケーションではほとんど役に立ちません。イスラム暦は、日/月/年の形式を使用します。ご存知のように、2 番目の月と 2 番目の日を区別しようとするのは無意味なので、忘れて構いませんが、ヒジュラ年とグレゴリオ暦を区別することには同様の問題があります... 1492 年の土ですが、ヒジュラ語の 1492 年はグレゴリオ暦の 2069 年です。

それはすべて、私が推測する一連のルールを確立することの問題です。コードがイスラム暦の日付のみを受け入れることを意図している場合は、ユーザーがイスラム暦の日付のみを指定できるようにし、グレゴリオ暦の日付を指定する場合はその逆を行うようにしてください。イスラム暦の日付形式が期待されていて、誰かが 2016 年を提供している場合、イスラム暦の 2016 年は実際には 2577 年であるため、これは明らかに誤りです。

ユーザーは、日付をどれだけ遡って指定できますか? 2016 年のグレゴリオ暦と同等の 1437 年のイスラム暦 (579 年の違い) との違いは十分に大きいため、実際に提供された日付形式を確実に解釈し、必要な変換を行うことができます。とはいえ、あるアプリケーションで受け入れられるものでも、別のアプリケーションでは受け入れられない場合があります。

于 2016-01-19T15:31:42.173 に答える