/* 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.* ;
import java.time.chrono.* ;
import java.time.zone.* ;
import java.sql.Timestamp ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
LocalDate ld = LocalDate.of( 2020 , Month.JANUARY , 23 );
LocalTime lt = LocalTime.of( 23 , 0 );
ZoneId zMontreal = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , zMontreal );
Instant instant = zdt.toInstant();
// Convert from modern class to troubled legacy class `Timestamp`.
// Dump to console
System.
out.
println( "zdt.toString() = " + zdt
); System.
out.
println( "instant.toString() = " + instant
); System.
out.
println( "ts.toString() = " + ts
); System.
out.
println( "JVM’s current default time zone: " + ZoneId.
systemDefault() );
// Imagine at runtime the JVM’s current default time zone is `Asia/Tokyo`.
LocalDate localDate = ts.toLocalDateTime().toLocalDate();
// Compare results.
boolean sameDate = ld.isEqual( localDate );
System.
out.
println( "sameDate = " + sameDate
+ " | ld: " + ld
+ " localDate: " + localDate
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLiogOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC4qIDsKaW1wb3J0IGphdmEudGltZS50ZW1wb3JhbC4qIDsKaW1wb3J0IGphdmEudGltZS5jaHJvbm8uKiA7CmltcG9ydCBqYXZhLnRpbWUuem9uZS4qIDsKaW1wb3J0IGphdmEuc3FsLlRpbWVzdGFtcCA7CgoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCgkgICAgTG9jYWxEYXRlIGxkID0gTG9jYWxEYXRlLm9mKCAyMDIwICwgTW9udGguSkFOVUFSWSAsIDIzICk7CgkgICAgTG9jYWxUaW1lIGx0ID0gTG9jYWxUaW1lLm9mKCAyMyAsIDAgKTsKCSAgICBab25lSWQgek1vbnRyZWFsID0gWm9uZUlkLm9mKCAiQW1lcmljYS9Nb250cmVhbCIgKTsKCSAgICBab25lZERhdGVUaW1lIHpkdCA9IFpvbmVkRGF0ZVRpbWUub2YoIGxkICwgbHQgLCB6TW9udHJlYWwgKTsKCSAgICBJbnN0YW50IGluc3RhbnQgPSB6ZHQudG9JbnN0YW50KCk7CgkgICAgLy8gQ29udmVydCBmcm9tIG1vZGVybiBjbGFzcyB0byB0cm91YmxlZCBsZWdhY3kgY2xhc3MgYFRpbWVzdGFtcGAuCgkgICAgamF2YS5zcWwuVGltZXN0YW1wIHRzID0gVGltZXN0YW1wLmZyb20oIGluc3RhbnQgKTsKCSAgICAKCSAgICAvLyBEdW1wIHRvIGNvbnNvbGUKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJ6ZHQudG9TdHJpbmcoKSA9ICIgKyB6ZHQgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJpbnN0YW50LnRvU3RyaW5nKCkgPSAiICsgaW5zdGFudCApOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggInRzLnRvU3RyaW5nKCkgPSAiICsgdHMgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJKVk3igJlzIGN1cnJlbnQgZGVmYXVsdCB0aW1lIHpvbmU6ICIgKyBab25lSWQuc3lzdGVtRGVmYXVsdCgpICk7CgkKCSAgICAvLyBJbWFnaW5lIGF0IHJ1bnRpbWUgdGhlIEpWTeKAmXMgY3VycmVudCBkZWZhdWx0IHRpbWUgem9uZSBpcyBgQXNpYS9Ub2t5b2AuCgkgICAgVGltZVpvbmUuc2V0RGVmYXVsdCggVGltZVpvbmUuZ2V0VGltZVpvbmUoICJBc2lhL1Rva3lvIiApICk7CgkgICAgTG9jYWxEYXRlIGxvY2FsRGF0ZSA9IHRzLnRvTG9jYWxEYXRlVGltZSgpLnRvTG9jYWxEYXRlKCk7CgkKCSAgICAvLyBDb21wYXJlIHJlc3VsdHMuCgkgICAgYm9vbGVhbiBzYW1lRGF0ZSA9IGxkLmlzRXF1YWwoIGxvY2FsRGF0ZSApOwoJICAgIFN5c3RlbS5vdXQucHJpbnRsbiggInNhbWVEYXRlID0gIiArIHNhbWVEYXRlICsgIiB8IGxkOiAiICsgbGQgKyAiIGxvY2FsRGF0ZTogIiArIGxvY2FsRGF0ZSApOwogICAgCgl9Cn0=