### Question:
DateTimeFormatterUtil { public static LocalDateTime bigDecimalToLocalDateTime(BigDecimal value, ZoneId defaultTimeZone) { Date dateTransformedValue = bigDecimalToDate(value); if (dateTransformedValue == null) { return null; } return dateTransformedValue.toInstant() .atZone(defaultTimeZone) .toLocalDateTime(); } private  DateTimeFormatterUtil(); static LocalDate stringToLocalDate(String value, String dateFormat,
                                              ZoneId defaultTimeZone); static Object stringToZonedDateTime(String value, String dateFormat, ZoneId defaultTimeZone); static Object stringToDateTime(String value, String dateFormat, ZoneId defaultTimeZone); static LocalDate bigDecimalToLocalDate(BigDecimal value, ZoneId defaultTimeZone); static LocalDateTime bigDecimalToLocalDateTime(BigDecimal value, ZoneId defaultTimeZone); static String inferDateTimeFormat(String value); static long packDateTimeWithZone(ZonedDateTime zdt); static long packDateTimeWithZone(long millisUtc, String zoneId); static ZonedDateTime constructZonedDateTime(long dateTimeWithTimeZone);  }### Answer:
@Test public void bigDecimalToLocalDateTimeTest() { LocalDateTime expected = LocalDateTime.of(2020, 2, 27, 0, 2, 27); Instant instant = expected.atZone(DEFAULT_TIME_ZONE).toInstant(); assertEquals(expected, DateTimeFormatterUtil.bigDecimalToLocalDateTime(new BigDecimal(instant.toEpochMilli()), DEFAULT_TIME_ZONE)); assertNull(DateTimeFormatterUtil.bigDecimalToLocalDateTime(null, null)); }