Look at the TimeZone class. If you have further questions, please ask again.
The dates when summer time begins and ends vary from time zone to time zone (though some time zones share the same rules). Many time zones do not have summer time at all. You may be fine if you just look at the computer's default time zone (though I've seen computers running incorrect time zones, like a computer in Europe running an American time zone, but having its clock set incorrectly so it appears to show the correct time for the European time zone).
It looks like there's no way to get the date and hour when the changes occur directly through the public API.
You can base a binary search on the inDaylightTime(Date) method.
If you are sure the program will only be run on one specific version of the JRE you can study the source code to determine the interface of the private API and use reflection to access it.
> It looks like there's no way to get the date and hour
> when the changes occur directly through the public
> API.
Funny and surprising: You're right. The subclass SimpleTimeZone (which is used for about all time zones) has constructors and setters for setting the rules for when summer time begins and ends -- but no corresponding getters.
@OP, you may need to call useDaylightTime() first to determine if summer time is used at all. After that, I'd go with Joni Salonen's suggestion.