从天数柜台获取年份

时间:2011-02-22 05:04:31

标签: date

我有一个整数,显示自1970年1月1日以来的天数,例如1969-12-31 = -1,1970-01-01 = 0,1970-01-02 = 1,依此类推。我想知道一个算法,它将采用这一天的数字并告诉我哪一天是这一天。因此,例如1970年的0到364天,1971年的365到729天,依此类推。请记住,算法必须接受正数和负数;然而,它不需要处理Julian到Gregorian日历的转换(即我们可以假设当前的公历系统在时间上连续向后延伸)。

2 个答案:

答案 0 :(得分:0)

我找到了问题的答案。这是一些有效的Java代码。

public int yearFromDays(int days) {
    double d0 = days + 719162;
    double n400 = Math.floor(d0/146097.0);
    double d1 = d0 % 146097;
    double n100 = Math.floor(d1/36524.0);
    double d2 = d1 % 36524;
    double n4 = Math.floor(d2/1461.0);
    double d3 = d2 % 1461;
    double n1 = Math.floor(d3/365.0);
    double year = 400*n400 + 100*n100 + 4*n4 + n1;
    if (n100 != 4 && n1 != 4) year++;

    return (int)year;
}

答案 1 :(得分:0)

以下是使用Java API执行此操作的方法:

public int yearFromDays(int days) {
    Calendar c = Calendar.getInstance();
    c.setTime(new Date(0));
    c.add(Calendar.DATE, days);
    return c.get(Calendar.YEAR);
}