INNER CODE UNIT · Java
calElement
xkzhangsan/xk-time · src/main/java/com/xkzhangsan/time/LunarDate.java:499
public static final long[] calElement(int year, int month, int day) {
long[] nongDate = new long[8];
int i = 0, temp = 0, leap = 0;
LocalDateTime baseDate = LocalDate.of(1900, 1, 31).atStartOfDay();
LocalDateTime objDate = LocalDate.of(year, month, day).atStartOfDay();
long offset = DateTimeCalculatorUtil.betweenTotalDays(baseDate, objDate);
nongDate[5] = offset + 40;
nongDate[4] = 14;
for (i = 1900; i <= 2100 && offset > 0; i++) {
temp = lunarYearDays(i);
offset -= temp;
nongDate[4] += 12;
}
if (offset < 0) {
offset += temp;
i--;
nongDate[4] -= 12;
}