/* 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.util.concurrent.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// Time-of-day
int hour = 7 ;
int minute = 23 ;
String input
= hour
+ ":" + minute
+ " " + ( isAM
? "AM" : "PM" ) ; // Ex: 7:53 AM DateTimeFormatter f = DateTimeFormatter.ofPattern( "h:m a" );
LocalTime lt = LocalTime.parse( input , f );
System.
out.
println ( "input: " + input
); System.
out.
println ( "lt.toString(): " + lt
);
// Date + time-of-day
LocalDate ld = LocalDate.of( 2017 , Month.MARCH , 4 );
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.of( ld , lt , z );
System.
out.
println ( "zdt.toString(): " + zdt
);
LocalTime fiveAm = LocalTime.MIN.with ( ChronoField.HOUR_OF_AMPM , 5 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 0 );
LocalTime fivePm = LocalTime.MIN.with ( ChronoField.HOUR_OF_AMPM , 5 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 1 );
System.
out.
println ( "fiveAm.toString(): " + fiveAm
); System.
out.
println ( "fivePm.toString(): " + fivePm
);
LocalTime zeroAm = LocalTime.MIN.with ( ChronoField.HOUR_OF_AMPM , 0 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 0 );
LocalTime zeroPm = LocalTime.MIN.with ( ChronoField.HOUR_OF_AMPM , 0 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 1 );
System.
out.
println ( "zeroAm.toString(): " + zeroAm
); System.
out.
println ( "zeroPm.toString(): " + zeroPm
);
LocalTime twelveAm = LocalTime.MIN.with ( ChronoField.CLOCK_HOUR_OF_AMPM , 12 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 0 );
LocalTime twelvePm = LocalTime.MIN.with ( ChronoField.CLOCK_HOUR_OF_AMPM , 12 ).withMinute ( 23 ).with ( ChronoField.AMPM_OF_DAY , 1 );
System.
out.
println ( "twelveAm.toString(): " + twelveAm
); System.
out.
println ( "twelvePm.toString(): " + twelvePm
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLio7CmltcG9ydCBqYXZhLnRpbWUuZm9ybWF0Lio7CmltcG9ydCBqYXZhLnRpbWUudGVtcG9yYWwuKjsKaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50Lio7CgoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyBUaW1lLW9mLWRheQoJCWludCBob3VyID0gNyA7CgkJaW50IG1pbnV0ZSA9IDIzIDsKCQlCb29sZWFuIGlzQU0gPSBCb29sZWFuLlRSVUUgOwoJCVN0cmluZyBpbnB1dCA9IGhvdXIgKyAiOiIgKyBtaW51dGUgKyAiICIgKyAoIGlzQU0gPyAiQU0iIDogIlBNIiApIDsgIC8vIEV4OiA3OjUzIEFNCgkJRGF0ZVRpbWVGb3JtYXR0ZXIgZiA9IERhdGVUaW1lRm9ybWF0dGVyLm9mUGF0dGVybiggImg6bSBhIiApOwogICAgICAgIExvY2FsVGltZSBsdCA9IExvY2FsVGltZS5wYXJzZSggaW5wdXQgLCBmICk7CiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICggImlucHV0OiAiICsgaW5wdXQgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCAibHQudG9TdHJpbmcoKTogIiArIGx0ICk7CiAgICAgICAgCiAgICAgICAgLy8gRGF0ZSArIHRpbWUtb2YtZGF5CiAgICAgICAgTG9jYWxEYXRlIGxkID0gTG9jYWxEYXRlLm9mKCAyMDE3ICwgTW9udGguTUFSQ0ggLCA0ICk7CiAgICAgICAgWm9uZUlkIHogPSBab25lSWQub2YoICJBbWVyaWNhL01vbnRyZWFsIiApOwogICAgICAgIFpvbmVkRGF0ZVRpbWUgemR0ID0gWm9uZWREYXRlVGltZS5vZiggbGQgLCBsdCAsIHogKTsgCiAgICAgICAgCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICggInpkdC50b1N0cmluZygpOiAiICsgemR0ICk7CgogICAgICAgIExvY2FsVGltZSBmaXZlQW0gPSBMb2NhbFRpbWUuTUlOLndpdGggKCBDaHJvbm9GaWVsZC5IT1VSX09GX0FNUE0gLCA1ICkud2l0aE1pbnV0ZSAoIDIzICkud2l0aCAoIENocm9ub0ZpZWxkLkFNUE1fT0ZfREFZICwgMCApOwogICAgICAgIExvY2FsVGltZSBmaXZlUG0gPSBMb2NhbFRpbWUuTUlOLndpdGggKCBDaHJvbm9GaWVsZC5IT1VSX09GX0FNUE0gLCA1ICkud2l0aE1pbnV0ZSAoIDIzICkud2l0aCAoIENocm9ub0ZpZWxkLkFNUE1fT0ZfREFZICwgMSApOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCAiZml2ZUFtLnRvU3RyaW5nKCk6ICIgKyBmaXZlQW0gKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCAiZml2ZVBtLnRvU3RyaW5nKCk6ICIgKyBmaXZlUG0gKTsKCiAgICAgICAgTG9jYWxUaW1lIHplcm9BbSA9IExvY2FsVGltZS5NSU4ud2l0aCAoIENocm9ub0ZpZWxkLkhPVVJfT0ZfQU1QTSAsIDAgKS53aXRoTWludXRlICggMjMgKS53aXRoICggQ2hyb25vRmllbGQuQU1QTV9PRl9EQVkgLCAwICk7CiAgICAgICAgTG9jYWxUaW1lIHplcm9QbSA9IExvY2FsVGltZS5NSU4ud2l0aCAoIENocm9ub0ZpZWxkLkhPVVJfT0ZfQU1QTSAsIDAgKS53aXRoTWludXRlICggMjMgKS53aXRoICggQ2hyb25vRmllbGQuQU1QTV9PRl9EQVkgLCAxICk7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoICJ6ZXJvQW0udG9TdHJpbmcoKTogIiArIHplcm9BbSApOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoICJ6ZXJvUG0udG9TdHJpbmcoKTogIiArIHplcm9QbSApOwoKICAgICAgICBMb2NhbFRpbWUgdHdlbHZlQW0gPSBMb2NhbFRpbWUuTUlOLndpdGggKCBDaHJvbm9GaWVsZC5DTE9DS19IT1VSX09GX0FNUE0gLCAxMiApLndpdGhNaW51dGUgKCAyMyApLndpdGggKCBDaHJvbm9GaWVsZC5BTVBNX09GX0RBWSAsIDAgKTsKICAgICAgICBMb2NhbFRpbWUgdHdlbHZlUG0gPSBMb2NhbFRpbWUuTUlOLndpdGggKCBDaHJvbm9GaWVsZC5DTE9DS19IT1VSX09GX0FNUE0gLCAxMiApLndpdGhNaW51dGUgKCAyMyApLndpdGggKCBDaHJvbm9GaWVsZC5BTVBNX09GX0RBWSAsIDEgKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuICggInR3ZWx2ZUFtLnRvU3RyaW5nKCk6ICIgKyB0d2VsdmVBbSApOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiAoICJ0d2VsdmVQbS50b1N0cmluZygpOiAiICsgdHdlbHZlUG0gKTsKICAgICAgICAKCX0KfQ==