Don't know about the US, but in Europe (when we all switch on the same day), I have my server set to auto switch between GMT and GMT+1 (British Summer Time) and then an attribute in systemsetting called HoursFromServer (+ or - integer number)
Then, when I need to calculate a time I use FlightLog.Flightstart=TIME_ADD(TIMESTAMP(1,1,1970,CURRENT_HOUR,CURRENT_MINUTE),SystemSettings.HoursFromServer)
In my case I'm recording start and stop times and don't care about the date but you could equally use TIME_ADD(CURRENT_TIMESTAMP,SystemSettings.HoursFromServer)
Using this method, the user never needs to change anything - they don't even need a time zone setting. The problem I always found with AIM is that if a manager in one time zone is checking a colleague's appointments in another time zone, the manager will have to either switch time zones or do some mental arithmatic to arrive at the actual (local) time of the appointment. In my case If I as a UK resident want to see what time a flight took off in Belgium, I always know that the time I am looking at is Belgium Local time.
Might not be the most elegant solution but it works from me. In continents where not all clocks change on the same day, it might need some tweaking. I should also add that in my case, my customers (gliding clubs) have discreet Business spaces and their members are all local. So I can see how this wouldn't work where a single company has employees across the time zones - but hopefully it's given some food for thought