class DateUtil extends AbstractCaller {

    @Description("Returns the current date/time in the UTC time zone modified according to a pattern after applying time zone offset (DST aware).<br/>"
            + "If modified date time is on weekend and <code>skipWeekends</code> is <code>true</code> then the next working day in direction of modification will be returned"
            + MODIFY_HELP
            + "Example: #{getDateTimeByZoneId(modifyPattern, skipWeekends, timeZoneId)}"
    )
    @UtilityMethod
    public final LocalDateTime getDateTimeByZoneId(String modifyPattern, boolean skipWeekends, String timeZoneId) {
        ZoneId zoneId = ZoneId.of(timeZoneId);
        LocalDateTime nowDate = LocalDateTime.now(zoneId);
        nowDate = modifyDateTime(nowDate, modifyPattern, skipWeekends);
        return ZonedDateTime.of(nowDate, zoneId).withZoneSameInstant(ZoneOffset.UTC).toLocalDateTime();
    }

}