Получить год от счетчика числа дней - PullRequest
0 голосов
/ 22 февраля 2011

У меня есть целое число, которое показывает количество дней с 1 января 1970 года, где, например, 1969-12-31 = -1, 1970-01-01 = 0, 1970-01-02 = 1 и т. Д. , Я хотел бы знать алгоритм, который возьмет этот номер дня и скажет мне, в каком году этот день. Так, например, дни от 0 до 364 лежат в 1970 году, дни от 365 до 729 лежат в 1971 году и так далее. Имейте в виду, что алгоритм должен принимать как положительные, так и отрицательные числа; однако, это не должно иметь дело с переходом с юлианского на григорианский календарь (то есть мы можем предположить, что текущая система григорианского календаря непрерывно растягивается назад во времени).

Ответы [ 2 ]

0 голосов
/ 22 февраля 2011

Вот способ сделать это с помощью API Java:

public int yearFromDays(int days) {
    Calendar c = Calendar.getInstance();
    c.setTime(new Date(0));
    c.add(Calendar.DATE, days);
    return c.get(Calendar.YEAR);
}
0 голосов
/ 22 февраля 2011

Я нашел ответ на свой вопрос. Вот код 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...