    @Test
    public void getDateTimeByZoneId() {

        for (int hoursDiff = -1; hoursDiff <= 1; hoursDiff += 1) {
            for (int minutsDiff = -10; minutsDiff <= 10; minutsDiff += 10) {

                long defaultOffsetSeconds = TimeUnit.HOURS.toSeconds(3);
                long offsetSeconds = defaultOffsetSeconds + TimeUnit.HOURS.toSeconds(hoursDiff)  + TimeUnit.MINUTES.toSeconds(minutsDiff);

                String unsignedOffset = LocalTime.ofSecondOfDay(Math.abs(offsetSeconds)).format(DateTimeFormatter.ofPattern("HH:mm"));
                String signedOffset = (offsetSeconds < 0 ? '-' : '+') + unsignedOffset;

                // Create date type using modify pattern for UTC time zone
                LocalDateTime dateTime = dateUtil.getDateTime("Y=2018:M=3:D=7:s=10:ns=123456789" +
                        // Apply shift between time zone 
                        ":h=" + (12 - hoursDiff) +
                        ":m=" + (30 - minutsDiff))
                        .minusSeconds(defaultOffsetSeconds);
                LocalDateTime dateTimeByZoneId = dateUtil.getDateTimeByZoneId("Y=2018:M=3:D=7:h=12:m=30:s=10:ns=123456789", signedOffset);

                assertEquals("Diff hours = " + hoursDiff + ", minuts = " + minutsDiff, dateTime, dateTimeByZoneId);
            }
        }

    }