Obviously this can only be done if you know what country you are in (you seem to be giving US examples), and for dates in the past (national governments, or in some cases state governments, can change the clocks on a whim).
There are no standard faciities in XSLT 1.0 or 2.0 for this. You may be able to call extension functions in an external library. Saxon has an extension function saxon:in-summer-time() which would appear to meet your needs: see
http://www.saxonica.com/documentatio...mmer-time.html
It takes two arguments, the date/time in question, and an identifier for the civil time zone - either simply a country code, or an Olsen timezone name.