Hi All
I've used this for many years, works for Europe and I suppose could be adapted for USA. DST Europe changes in March or October, last weekend of the month. The routine calculates the date in the respective month that the change occurs on.
DSTStart holds the start date for DST
DSTEnd holds the end date for DST
Year holds the year in this format e.g 2016

DSTCheck:
DSTStart = (31 - (((5*Year)/4)+ 4) mod 7)
DSTEnd = (31 - (((5*Year/4)) + 1) mod 7)
Return

That's it, Pete