/* 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.util.concurrent.TimeUnit ;


/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		    // Convert your milliseconds to an offset-from-UTC.
	    int milliseconds = 21_600_000;
	    int seconds = Math.toIntExact( TimeUnit.MILLISECONDS.toSeconds( milliseconds ) );
	    ZoneOffset targetOffset = ZoneOffset.ofTotalSeconds( seconds );
	
	    // Capture the current moment as seen in UTC (an offset of zero hours-minutes-seconds).
	    Instant now = Instant.now();
	
	    // Loop through all know time zones, comparing each one’s zone to the target zone.
	    List < ZoneId > hits = new ArrayList <>();
	    Set < String > zoneNames = ZoneId.getAvailableZoneIds();
	    for ( String zoneName : zoneNames )
	    {
	        ZoneId zoneId = ZoneId.of( zoneName );
	
	        ZoneRules rules = zoneId.getRules();
	        // ZoneRules rules = zoneId.getRules() ;
	        ZoneOffset offset = rules.getOffset( now );
	        if ( offset.equals( targetOffset ) )
	        {
	            hits.add( zoneId );
	        }
	    }
	
	    // Report results.
	    System.out.println( "java.version " + System.getProperty("java.version") ) ;
	    System.out.println( "java.vendor " + System.getProperty("java.vendor") ) ;
	    System.out.println() ;
	    System.out.println( "targetOffset = " + targetOffset );
	    System.out.println( "hits: " + hits );
	}
}