【问题标题】:How to detect Hijri dates?如何检测回历日期?
【发布时间】:2016-04-25 01:32:36
【问题描述】:

谁能告诉一个好的方法来检测以字符串形式出现的日期是否为回历格式?任何自动检测字符串日期类型(回历)的好解决方案?

最初的工作或想法: 我们可以检查年份从 14 或 13 开始,例如回历年份。 “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);

【问题讨论】:

  • 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决该问题所做的工作。
  • 它基本上是推荐解决问题的好方法。由于使用 if-else 硬代码条件解决问题并不是始终向前发展的方法。
  • 这个问题对我来说似乎有效,要求以编程方式分析字符串以检测某种值。

标签: java jodatime datetime-format hijri


【解决方案1】:

据我所知,区分回历日期和公历日期的唯一真正方法是按提供的年份。对于大多数应用程序,这可能就足够了,但对于其他应用程序来说,它几乎没有用。 Hijri 使用 日/月/年 格式。正如您已经知道的那样,试图区分第 2 个月和第 2 天是没有意义的,因此您可以忘记这一点,但是将回历年与公历年区分开来存在类似的问题......克里斯托弗·哥伦布 (Christopher Columbus) 漂流进来,一脚踩在北美土壤是 1492 年,但回历中的 1492 是公历中的 2069。

我想这只是建立一套规则的问题。如果代码仅用于接受回历日期,请确保用户只能提供回历日期,反之亦然以提供公历日期。如果预期回历日期格式并且有人提供 2016 年,那么这显然是错误的,因为回历中的 2016 年实际上是 2577 年。如果你问我,这在未来有点远。

用户可以提供多远或多远的日期?格里高利 2016 年与 1437 年的等效回历(相差 579 年)之间的差异足够大,您可以对实际提供的日期格式建立自信的解释并进行必要的转换。然而,话虽如此,一个应用程序可以接受的内容可能无法为另一个应用程序接受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-11-15
    • 2016-11-28
    • 2021-12-29
    相关资源
    最近更新 更多