Нет фактического часового пояса Oracle в формате ISO https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3.
Итак, я хотел бы предложить вам провести сопоставление между зонами ISO и часовыми поясами Oracle https://www.mkyong.com/java/java-display-list-of-timezone-with-gmt/
Итак, мое решение вашего вопроса выглядит так:
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
public class IsoToOracleDate {
static Map<String, String> timezones = new HashMap<String, String>(){{
put("NLD","Europe/Amsterdam");
put("RUS","Europe/Moscow");
put("USA","America/New_York");
}};
public static void main(String[] args) {
String zone = timezones.get("NLD");
ZoneId zoneId = ZoneId.of(zone);
long epochMilli = 1525370235 * 1000L;
LocalDateTime dt = Instant.ofEpochMilli(epochMilli).atZone(zoneId).toLocalDateTime();
ZonedDateTime zdt = ZonedDateTime.of(dt, zoneId);
System.out.println(zdt.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));
}
}
Выходы:
2018-05-03T19: 57: 15 + 02: 00
У вас есть отображение часовых поясов в переменной timezones .
Создание ZoneId (оракула) из сопоставления ZoneId zoneId = ZoneId.of (zone);
Создать LocalDateTime dt из epochMilli в соответствии с вашей зоной и преобразовать его в ZonedDateTime zdt .
Затем просто отформатируйте zdt с предопределенным форматом DateTimeFormatter.ISO_OFFSET_DATE_TIME