TL;DR
DateTimeFormatter f = new DateTimeFormatterBuilder ().parseCaseInsensitive ().appendPattern ( "dd-MMM-yy hh.mm.ss.SSSSSSSSS a ZZZZZ" ).toFormatter ().withLocale ( Locale.US );
OffsetDateTime odt = OffsetDateTime.parse ( "03-AUG-12 08.15.00.000000000 PM -05:00" , f );
,
Oracle. , . ResultSet java.sql.Timestamp .
java.sql.Timestamp ts = myResultSet.getTimestamp( … );
java.time. , , / java.time.
Instant instant = ts.toInstant();
, JDBC 4.2 Java 8 , java.time.Instant ResultSet::getObject.
, .
, Java, . java.time.
nanosecond, . , , , java.time .
java.time
. , ; ISO 8601 , .
"", . - , Aug, -.
String pattern = "dd-MMM-yy hh.mm.ss.SSSSSSSSS a ZZZZZ";
DateTimeFormatterBuilder fb = new DateTimeFormatterBuilder ().parseCaseInsensitive ().appendPattern ( pattern );
, . Locale () , .. () , , , ..
Locale l = Locale.US;
DateTimeFormatter f = fb.toFormatter ().withLocale ( l );
, OffsetDateTime.
String input = "03-AUG-12 08.15.00.000000000 PM -05:00";
OffsetDateTime odt = OffsetDateTime.parse ( input , f );
. , 8 PM 24- 20 .
System.out.println ( "input: " + input + " | odt.toString(): " + odt );
: 03-AUG-12 08.15.00.000000000 PM -05: 00 | odt.toString(): 2012-08-03T20: 15-05: 00
A offset-from-UTC , (DST). ZoneId, ZonedDateTime.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = odt.atZoneSameInstant( z );
java.time
java.time Java 8 . , java.util.Date, .Calendar java.text.SimpleDateFormat.
Joda-Time, , java.time.
, . Oracle. Qaru .
java.time Java 6 7 ThreeTen-Backport Android ThreeTenABP (. ...).
The ThreeTen-Extra project extends java.time with additional classes. This project is a proof of possible future additions to java.time. Here you can find useful classes, such as Interval, YearWeek, YearQuarter, etc.