private static long calculateNormalOffset(ScheduleInfo scheduleInfo) {
        if (scheduleInfo.getScheduleInterval() == null || scheduleInfo.getScheduleUnit() == null) {
            LOGGER.error("Schedule interval and unit cannot be null for normal scheduling");
            throw new IllegalArgumentException("Schedule interval and unit cannot be null for normal scheduling");
        }
        switch (Objects.requireNonNull(ScheduleUnit.getScheduleUnit(scheduleInfo.getScheduleUnit()))) {
            case YEAR:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_YEAR;
            case MONTH:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_MONTH;
            case WEEK:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_WEEK;
            case DAY:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_DAY;
            case HOUR:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_HOUR;
            case MINUTE:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_MINUTE;
            case SECOND:
                return scheduleInfo.getScheduleInterval() * MILLIS_IN_SECOND;
            case ONE_ROUND:
                return scheduleInfo.getScheduleInterval();
            default:
                LOGGER.error("Invalid schedule unit");
                throw new DolphinScheduleException("Invalid schedule unit");
        }
    }
Calculate the offset according to schedule info

@param scheduleInfo The schedule info
@return timestamp between two schedule task
inlong-manager/manager-schedule/src/main/java/org/apache/inlong/manager/schedule/dolphinscheduler/DolphinScheduleUtils.java