Юлианская дата года в Java

Я видел "решение" по http://www.rgagnon.com/javadetails/java-0506.html, но оно не работает правильно. Например, вчера (8 июня) должен был быть 159, но это сказало, что было 245.

Так, у кого-то есть решение в Java для получения трех Юлианских дат цифры текущей даты (не дата Julian - мне требуется день в этом году)?

Спасибо! Mark

16
задан Mark 9 June 2010 в 12:03
поделиться

2 ответа

Если вам нужен только день года, почему бы вам просто не использовать поле GregorianCalendars DAY_OF_YEAR ?

import java.util.GregorianCalendar;
public class CalTest {
    public static void main(String[] argv) {
        GregorianCalendar gc = new GregorianCalendar();
        gc.set(GregorianCalendar.DAY_OF_MONTH, 8);
        gc.set(GregorianCalendar.MONTH, GregorianCalendar.JUNE);
        gc.set(GregorianCalendar.YEAR, 2010);
        System.out.println(gc.get(GregorianCalendar.DAY_OF_YEAR));
}

}

В качестве альтернативы вы можете вычислить разницу между сегодняшней датой по юлианскому календарю и датой 1 января этого года. Но не забудьте добавить к результату 1, поскольку 1 января - не нулевой день в году:

int[] now = {2010, 6, 8};
int[] janFirst = {2010, 1, 1};
double dayOfYear = toJulian(now) - toJulian(janFirst) + 1
System.out.println(Double.valueOf(dayOfYear).intValue());
7
ответ дан 30 November 2019 в 21:10
поделиться
import java.util.Calendar;
// ...
final int julianDay = Calendar.getInstance().get(Calendar.DAY_OF_YEAR);

Обратите внимание, что это не учитывает "начинается в полдень", о котором утверждает тот странный сайт, на который вы ссылались. Это можно исправить, просто проверив время, конечно.

6
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: