/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.* ;
import java.time.format.* ;
import java.time.temporal.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
OffsetDateTime odt = OffsetDateTime.parse( "2018-10-21T01:00:00.000-02:00" ) ;
ZoneOffset offset = ZoneOffset.ofHours( -3 ) ;
OffsetDateTime odt2 = odt.withOffsetSameInstant( offset ) ; // Same moment, same point on the timeline, different wall-clock time.
Instant instant1 = odt.toInstant() ; // Adjust to UTC.
Instant instant2 = odt2.toInstant() ;
boolean sameMoment = instant1.equals( instant2 ) ;
OffsetDateTime differentMomentButSameTimeOfDay = odt. withOffsetSameLocal( offset ) ;
Instant differentInstant = differentMomentButSameTimeOfDay.toInstant() ;
System.
out.
println( "odt.toString(): " + odt
) ; System.
out.
println( "odt2.toString(): " + odt2
) ; System.
out.
println( "instant1.toString(): " + instant1
) ; System.
out.
println( "instant2.toString(): " + instant2
) ; System.
out.
println( "sameMoment.toString(): " + sameMoment
) ; System.
out.
println( "differentMomentButSameTimeOfDay.toString(): " + differentMomentButSameTimeOfDay
) ; System.
out.
println( "differentInstant.toString(): " + differentInstant
) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLiogOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC4qIDsKaW1wb3J0IGphdmEudGltZS50ZW1wb3JhbC4qIDsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgogICAgT2Zmc2V0RGF0ZVRpbWUgb2R0ID0gT2Zmc2V0RGF0ZVRpbWUucGFyc2UoICIyMDE4LTEwLTIxVDAxOjAwOjAwLjAwMC0wMjowMCIgKSA7CiAgICBab25lT2Zmc2V0IG9mZnNldCA9IFpvbmVPZmZzZXQub2ZIb3VycyggLTMgKSA7CiAgICBPZmZzZXREYXRlVGltZSBvZHQyID0gb2R0LndpdGhPZmZzZXRTYW1lSW5zdGFudOKAiyggb2Zmc2V0ICkgOyAgLy8gU2FtZSBtb21lbnQsIHNhbWUgcG9pbnQgb24gdGhlIHRpbWVsaW5lLCBkaWZmZXJlbnQgd2FsbC1jbG9jayB0aW1lLgoKICAgIEluc3RhbnQgaW5zdGFudDEgPSBvZHQudG9JbnN0YW50KCkgOyAgLy8gQWRqdXN0IHRvIFVUQy4KICAgIEluc3RhbnQgaW5zdGFudDIgPSBvZHQyLnRvSW5zdGFudCgpIDsKICAgIGJvb2xlYW4gc2FtZU1vbWVudCA9IGluc3RhbnQxLmVxdWFscyggaW5zdGFudDIgKSA7IAogICAgCiAgICBPZmZzZXREYXRlVGltZSBkaWZmZXJlbnRNb21lbnRCdXRTYW1lVGltZU9mRGF5ID0gb2R0LiB3aXRoT2Zmc2V0U2FtZUxvY2FsKCBvZmZzZXQgKSA7CiAgICBJbnN0YW50IGRpZmZlcmVudEluc3RhbnQgPSBkaWZmZXJlbnRNb21lbnRCdXRTYW1lVGltZU9mRGF5LnRvSW5zdGFudCgpIDsKCglTeXN0ZW0ub3V0LnByaW50bG4oICJvZHQudG9TdHJpbmcoKTogIiArIG9kdCApIDsKCVN5c3RlbS5vdXQucHJpbnRsbiggIm9kdDIudG9TdHJpbmcoKTogIiArIG9kdDIgKSA7CglTeXN0ZW0ub3V0LnByaW50bG4oICJpbnN0YW50MS50b1N0cmluZygpOiAiICsgaW5zdGFudDEgKSA7CglTeXN0ZW0ub3V0LnByaW50bG4oICJpbnN0YW50Mi50b1N0cmluZygpOiAiICsgaW5zdGFudDIgKSA7CglTeXN0ZW0ub3V0LnByaW50bG4oICJzYW1lTW9tZW50LnRvU3RyaW5nKCk6ICIgKyBzYW1lTW9tZW50ICkgOwoJU3lzdGVtLm91dC5wcmludGxuKCAiZGlmZmVyZW50TW9tZW50QnV0U2FtZVRpbWVPZkRheS50b1N0cmluZygpOiAiICsgZGlmZmVyZW50TW9tZW50QnV0U2FtZVRpbWVPZkRheSApIDsKCVN5c3RlbS5vdXQucHJpbnRsbiggImRpZmZlcmVudEluc3RhbnQudG9TdHJpbmcoKTogIiArIGRpZmZlcmVudEluc3RhbnQgKSA7CgoKCX0KfQ==