如何在jalali(shamsi)日历中添加日期

时间:2014-09-27 06:58:42

标签: java date calendar

我正在开发一个java应用程序,我需要从用户那里获取日期和天数,然后将这些数字添加到日期并在此情况下向用户显示最终日期,在此情况下是截止日期。 这里的问题是我正在使用 shamsi(jalali)日历并且为了计算,首先我必须将shamsi日期转换为java标准日历然后添加日期数字并再次将其转换回来到shamsi约会。

Date miladiDate = new Date(DateConvertor.shamsi2miladi(entity.getDoDate()));

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.setTime(miladiDate);
c.add(Calendar.DATE, baseEvaluate.getDeadLineDays());
String output = sdf.format(c.getTime());
System.out.println(output);
entityDetail.setDeadLineDate(DateConvertor.miladi2date(c.getTime()));

我想知道是否有一种方法可以在不转换shamsi日期的情况下执行此操作,只需将日期编号添加到shamsi日期即可。 P.S:我使用了joda时间,它不支持shamsi日历。

2 个答案:

答案 0 :(得分:0)

你可以在github和jcenter上使用这个Jalali日历,它有一个内置方法来计算基于日差的日期:

https://github.com/razeghi71/JalaliCalendar

答案 1 :(得分:0)

这个类似的问题Is there any library or algorithm for Persian (Shamsi or Jalali) calendar in Android?this Answer,它提供了它声称是转换为波斯语(Shamsi)日期的准确日历的源代码。

其他一些答案可能有所帮助。

请原谅我的无知,因为我对波斯日历一无所知......但我可以告诉你,可以将日历系统插入Java的现代日期时间架构(java.time)。

java.time

旧的java.util.Date/.Calendar类很乱,应该避免。它们已被Java 8及更高版本中内置的java.time框架所取代。

插入实现

我建议寻找甚至制作可以插入java.time框架的Jalali年表。它将是java.time.chrono.Chronology的实现,很可能是java.time.chrono.AbstractChronology的扩展。

下面我列出了十个实现,因为它们都是开源的,并且可以为尝试实现的任何人提供帮助。此列表显示将实现插入java.time已被证明是切实可行的。

java.time框架目前包括这些日历系统:

ThreeTen-Extra项目是java.time的扩展。它可以作为未来可能添加到java.time的试验场。如果有人确实拥有Jalali年表的开源实现,那么这个项目可能会接受它。

目前ThreeTen-Extra包含这些日历系统: