/* 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.zone.*;
import java.util.concurrent.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
List<CharSequence> inputs = new ArrayList<> ( 4 );
inputs.add ( "Mon Jul 28 11:39:29 GMT-05:00 2014" );
inputs.add ( "Mon Jul 28 13:39:29 GMT+02:00 2014" );
inputs.add ( "Thu Jul 17 00:02:02 UTC 2014" );
inputs.add ( "Fri Jul 18 14:47:01 UTC 2014" );
inputs.add ( "garbage-in garbaage-out" );
inputs.add ( "Fri Jan 23 12:34:56 UTC 2099" ); // Future.
Instant now = Instant.now (); // Capture the current moment in UTC.
DateTimeFormatter fGMT = DateTimeFormatter.ofPattern ( "EEE MMM dd HH:mm:ss OOOO uuuu" );
DateTimeFormatter fUTC = DateTimeFormatter.ofPattern ( "EEE MMM dd HH:mm:ss z uuuu" );
for ( CharSequence input : inputs ) {
if ( input.length () == "Mon Jul 28 11:39:29 GMT-05:00 2014".length () ) {
OffsetDateTime odt = OffsetDateTime.parse ( input , fGMT );
if ( odt.toInstant ().isAfter ( now ) ) {
System.
out.
println ( "input: " + input
+ " is future." ); } else {
System.
out.
println ( "input: " + input
+ " is past or present." ); }
} else if ( input.length () == "Thu Jul 17 00:02:02 UTC 2014".length () ) {
ZonedDateTime zdt = ZonedDateTime.parse ( input , fUTC );
if ( zdt.toInstant ().isAfter ( now ) ) {
System.
out.
println ( "input: " + input
+ " is future." ); } else {
System.
out.
println ( "input: " + input
+ " is past or present." ); }
} else {
System.
out.
println ( "ERROR - Unexpected input: " + input
); }
}
}
}