Я видел "решение" по http://www.rgagnon.com/javadetails/java-0506.html, но оно не работает правильно. Например, вчера (8 июня) должен был быть 159, но это сказало, что было 245.
Так, у кого-то есть решение в Java для получения трех Юлианских дат цифры текущей даты (не дата Julian - мне требуется день в этом году)?
Спасибо! Mark
Если вам нужен только день года, почему бы вам просто не использовать поле 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());
import java.util.Calendar;
// ...
final int julianDay = Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
Обратите внимание, что это не учитывает "начинается в полдень", о котором утверждает тот странный сайт, на который вы ссылались. Это можно исправить, просто проверив время, конечно.