These are the key points to the strategy I tend to use.
- Every date is UTC internally to the system.
- Users are shown dates in the their local timezone.
- We allow users to override the timezone they are using in case they travel and they want to keep the timezone consistent.
- Make the timezone easily visible. Either display it with the time or as part of the column header.