public void calcEphemeris(final ZoneId ZONE_ID) {
        try {
            setTwilight(TWILIGHT.HORIZON_34arcmin);
            calcSunAndMoon();
            LocalDateTime now        = LocalDateTime.now();
            ZonedDateTime zdt        = now.atZone(ZONE_ID);
            ZoneOffset    zoneOffset = zdt.getOffset();

            sunriseZDT = getZonedDateTime(sunrise, zoneOffset);
            sunsetZDT = getZonedDateTime(sunset, zoneOffset);

            // Calculate golden hour
            setTwilight(TWILIGHT.GOLDEN_HOUR);
            calcSunAndMoon();
            sunriseGoldenHourZDT = getZonedDateTime(sunrise, zoneOffset);
            sunsetGoldenHourZDT = getZonedDateTime(sunset, zoneOffset);

            // Calculate civil twilight
            setTwilight(TWILIGHT.TWILIGHT_CIVIL);
            calcSunAndMoon();
            sunriseCivilZDT = getZonedDateTime(sunrise, zoneOffset);
            sunsetCivilZDT = getZonedDateTime(sunset, zoneOffset);

            // Calculate blue hour
            setTwilight(TWILIGHT.BLUE_HOUR);
            calcSunAndMoon();
            sunriseBlueHourZDT = getZonedDateTime(sunrise, zoneOffset);
            sunsetBlueHourZDT = getZonedDateTime(sunset, zoneOffset);
        } catch (Exception e) {
            sunriseZDT           = ZonedDateTime.now();
            sunsetZDT            = ZonedDateTime.now();
            sunriseGoldenHourZDT = ZonedDateTime.now();
            sunsetGoldenHourZDT  = ZonedDateTime.now();
            sunriseCivilZDT      = ZonedDateTime.now();
            sunsetCivilZDT       = ZonedDateTime.now();
            sunriseBlueHourZDT   = ZonedDateTime.now();
            sunsetBlueHourZDT    = ZonedDateTime.now();
        }
    }
Calculates everything for the Sun and the Moon.
src/main/java/eu/hansolo/tilesfx/tools/SunMoonCalculator.java