/* package whatever; // don't place package name! */
import java.lang.* ;
import java.time.OffsetDateTime ;
import java.time.chrono.IsoChronology ;
import java.time.format.DateTimeFormatter ;
import java.time.format.DateTimeParseException ;
import java.time.format.ResolverStyle ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
DateTimeFormatter smartFormatter = DateTimeFormatter.ofPattern ( "yyyyMMddHHmmssZ" )
.withChronology ( IsoChronology.INSTANCE ) ;
DateTimeFormatter strictFormatter = smartFormatter.withResolverStyle ( ResolverStyle.STRICT ) ;
String inputString
= "20140726080320+0400" ;
OffsetDateTime parsedDateTime = OffsetDateTime.parse ( inputString, smartFormatter) ;
System .
out .
println ( "Parsed smart: " + parsedDateTime
) ;
String formattedStrict
= parsedDateTime.
format ( strictFormatter
) ; System .
out .
println ( "Formatted strict: " + formattedStrict
) ; System .
out .
println ( "Is string equal? " + formattedStrict.
equals ( inputString
) ) ;
try {
OffsetDateTime.parse ( formattedStrict, strictFormatter) ;
} catch ( DateTimeParseException dtpe) {
System .
out .
println ( "Strict formatter cannot parse the string it has produced:" ) ; }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubGFuZy4qOwppbXBvcnQgamF2YS50aW1lLk9mZnNldERhdGVUaW1lOwppbXBvcnQgamF2YS50aW1lLmNocm9uby5Jc29DaHJvbm9sb2d5OwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlcjsKaW1wb3J0IGphdmEudGltZS5mb3JtYXQuRGF0ZVRpbWVQYXJzZUV4Y2VwdGlvbjsKaW1wb3J0IGphdmEudGltZS5mb3JtYXQuUmVzb2x2ZXJTdHlsZTsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCiAgICB7CiAgICAgICAgRGF0ZVRpbWVGb3JtYXR0ZXIgc21hcnRGb3JtYXR0ZXIgPSBEYXRlVGltZUZvcm1hdHRlci5vZlBhdHRlcm4oInl5eXlNTWRkSEhtbXNzWiIpCiAgICAgICAgICAgICAgICAud2l0aENocm9ub2xvZ3koSXNvQ2hyb25vbG9neS5JTlNUQU5DRSk7CiAgICAgICAgRGF0ZVRpbWVGb3JtYXR0ZXIgc3RyaWN0Rm9ybWF0dGVyID0gc21hcnRGb3JtYXR0ZXIud2l0aFJlc29sdmVyU3R5bGUoUmVzb2x2ZXJTdHlsZS5TVFJJQ1QpOwogICAgICAgIFN0cmluZyBpbnB1dFN0cmluZyA9ICIyMDE0MDcyNjA4MDMyMCswNDAwIjsKICAgICAgICAKICAgICAgICBPZmZzZXREYXRlVGltZSBwYXJzZWREYXRlVGltZSA9IE9mZnNldERhdGVUaW1lLnBhcnNlKGlucHV0U3RyaW5nLCBzbWFydEZvcm1hdHRlcik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQYXJzZWQgc21hcnQ6ICAgICAiICsgcGFyc2VkRGF0ZVRpbWUpOwogICAgICAgIAogICAgICAgIFN0cmluZyBmb3JtYXR0ZWRTdHJpY3QgPSBwYXJzZWREYXRlVGltZS5mb3JtYXQoc3RyaWN0Rm9ybWF0dGVyKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkZvcm1hdHRlZCBzdHJpY3Q6ICIgKyBmb3JtYXR0ZWRTdHJpY3QpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSXMgc3RyaW5nIGVxdWFsPyAgIiArIGZvcm1hdHRlZFN0cmljdC5lcXVhbHMoaW5wdXRTdHJpbmcpKTsKICAgICAgICAKICAgICAgICB0cnkgewogICAgICAgICAgICBPZmZzZXREYXRlVGltZS5wYXJzZShmb3JtYXR0ZWRTdHJpY3QsIHN0cmljdEZvcm1hdHRlcik7CiAgICAgICAgfSBjYXRjaCAoRGF0ZVRpbWVQYXJzZUV4Y2VwdGlvbiBkdHBlKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RyaWN0IGZvcm1hdHRlciBjYW5ub3QgcGFyc2UgdGhlIHN0cmluZyBpdCBoYXMgcHJvZHVjZWQ6Iik7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkdHBlKTsKICAgICAgICB9CiAgICB9Cn0=