Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从希伯来历法中的总天数差计算月份_Java_Calendar_Hebrew - Fatal编程技术网

Java 如何从希伯来历法中的总天数差计算月份

Java 如何从希伯来历法中的总天数差计算月份,java,calendar,hebrew,Java,Calendar,Hebrew,我使用计算希伯来日历中的天数差,它返回正确的天数差。现在我想把那些日子换成月份或年份 但问题在于希伯来历法 希伯来历法中的一年可以是353、354、355、383、384或385 几天。普通年有12个月,共354个月 天。闰年有13个月,长384天。月份 不均匀的数字通常有30天,而偶数的月份则有30天 有29天 我试着用一年中的总天数来划分天数,但一年中的总天数不同。你能告诉我如何实现这一点吗?看起来像是一个不断减法的循环,最容易理解。我想你知道这两个不同的年份。这样的循环就可以工作了: in

我使用计算希伯来日历中的天数差,它返回正确的天数差。现在我想把那些日子换成月份或年份

但问题在于希伯来历法

希伯来历法中的一年可以是353、354、355、383、384或385 几天。普通年有12个月,共354个月 天。闰年有13个月,长384天。月份 不均匀的数字通常有30天,而偶数的月份则有30天 有29天


我试着用一年中的总天数来划分天数,但一年中的总天数不同。你能告诉我如何实现这一点吗?

看起来像是一个不断减法的循环,最容易理解。我想你知道这两个不同的年份。这样的循环就可以工作了:

int yearBegin = 1234;
int daysDiff = calcDaysDiff(); // your existing routine
int yearAnalyzing = yearBegin;
int years = 0;
while (daysDiff > 0) {
    int daysInThatYear = calcDaysInYear (yearAnalyzing); // you calc accdg your rules
    while (daysDiff >= daysInThatYear) {
        ++years;
        daysDiff -= daysinThatYear;
        yearAnalyzing++; // or --, depending which direction you want to go
    }
    // less than a year is left
    // calculate the months (should be easy)
}
如果你的开始日期是在年中开始的话,那么你必须在你开始循环之前先把你的差异排除在外。

< P>你可以使用我的LIB来提供这些特征来确定在年、月或日中测量的差异。示例(来自JUnit测试用例):

该逻辑在某种程度上类似于
java.time
-包中的标准逻辑。当结束日期的月日小于开始日期的月日,则计算的月增量(或年增量)将减少1

一般来说,我不建议尝试使用固定因子将天转换为月或年,因为希伯来日历有时有12个月,有时有13个月。我的lib也没有尝试,但是应用了一种优化的计数方式如果没有任何关于开始或结束日期的进一步信息,也不可能将日增量转换为月增量,主要原因如下:

Imagine the SAME day delta had been determined with a start date 
short before Adar I (leap month) or with another month later. Then the month
delta will be different because the second case does not include a leap month!
有关如何处理希伯来日历的更多示例,请参见


如果您使用的是Android,请使用具有类似API的专用衍生工具。

完全脱离主题,但有些年份使用12个月,有些年份使用13个月?哦,是啊…那么你如何从希伯来日历的总天数中得到月差呢?很明显,你需要希伯来日历开始时的所有数据?有趣的问题。。。我看了一下,并期待着类似于希伯来语的东西,但没有这样的东西@我想是阿兰月历吧。这与太阳年不一致,所以有13个月的闰年来调整它,这样季节就不会发生太大的变化?谢谢让我尝试这种方式,然后我会告诉你,如果不知道开始或结束日期,你不能将日差转换为月差,因为日差可能会延长一个闰月,另请看我的回答。@MenoHochschild,你是对的,我在闰年中遇到了一个问题,在计算两个希伯来日期之间的总日差时,我会处理这个问题,并让你知道
Imagine the SAME day delta had been determined with a start date 
short before Adar I (leap month) or with another month later. Then the month
delta will be different because the second case does not include a leap month!