class DateUtil extends AbstractCaller {

    @Description("Modifies a date/time string using format and modify patterns after applying time zone offset (DST aware)." + FORMAT_HELP + MODIFY_HELP + "Example; #{modifyDateTimeByZoneId(source, formatPattern, modifyPattern, timeZoneId)}")
    @UtilityMethod
    public String modifyDateTimeByZoneId(String source, String formatPattern, String modifyPattern, String timeZoneId) {
        LocalDateTime time = toDateTime(source);
        time = modifyDateTimeByZoneId(time, modifyPattern, timeZoneId);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(formatPattern).withZone(ZoneId.of(timeZoneId));
        return time.format(formatter);
    }

}