fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. import java.time.* ;
  8. import java.time.format.* ;
  9. import java.time.temporal.* ;
  10.  
  11. /* Name of the class has to be "Main" only if the class is public. */
  12. class Ideone
  13. {
  14. public static void main (String[] args) throws java.lang.Exception
  15. {
  16.  
  17. OffsetDateTime odt = OffsetDateTime.parse( "2018-10-21T01:00:00.000-02:00" ) ;
  18. ZoneOffset offset = ZoneOffset.ofHours( -3 ) ;
  19. OffsetDateTime odt2 = odt.withOffsetSameInstant( offset ) ; // Same moment, same point on the timeline, different wall-clock time.
  20.  
  21. Instant instant1 = odt.toInstant() ; // Adjust to UTC.
  22. Instant instant2 = odt2.toInstant() ;
  23. boolean sameMoment = instant1.equals( instant2 ) ;
  24.  
  25. OffsetDateTime differentMomentButSameTimeOfDay = odt. withOffsetSameLocal( offset ) ;
  26. Instant differentInstant = differentMomentButSameTimeOfDay.toInstant() ;
  27.  
  28. System.out.println( "odt.toString(): " + odt ) ;
  29. System.out.println( "odt2.toString(): " + odt2 ) ;
  30. System.out.println( "instant1.toString(): " + instant1 ) ;
  31. System.out.println( "instant2.toString(): " + instant2 ) ;
  32. System.out.println( "sameMoment.toString(): " + sameMoment ) ;
  33. System.out.println( "differentMomentButSameTimeOfDay.toString(): " + differentMomentButSameTimeOfDay ) ;
  34. System.out.println( "differentInstant.toString(): " + differentInstant ) ;
  35.  
  36.  
  37. }
  38. }
Success #stdin #stdout 0.14s 2184192KB
stdin
Standard input is empty
stdout
odt.toString(): 2018-10-21T01:00-02:00
odt2.toString(): 2018-10-21T00:00-03:00
instant1.toString(): 2018-10-21T03:00:00Z
instant2.toString(): 2018-10-21T03:00:00Z
sameMoment.toString(): true
differentMomentButSameTimeOfDay.toString(): 2018-10-21T01:00-03:00
differentInstant.toString(): 2018-10-21T04:00:00Z