I'd like to show events on a calendar for my web service's customers. There are four scenarios possible in regards to timezones for these events:
- An event is local to the customer and is in the same timezone. For example, a meeting with a local business.
- An event is physically located in a different timezone than the customer, but it is a "virtual" event and the customer will be attending it in their own timezone. For instance, the customer may want to watch a concert streamed live over the internet, but the concert is somewhere else in the world.
- An event it purely virtual, and all attendants will be experiencing it from their own timezone. For instance, a conference call.
- An event is in a different timezone than the customer, but the customer will be physically travelling to that location to attend the event. For instance, a conference in another state that they are attending.
To complicate things more, my service is going to send reminders via email or text of these events. I suppose this actually isn't hard -- a 1 hour reminder would be sent to everyone attending that event one hour before the time at the physical location. Everyone will get it at the same UTC time, but their local times might be different.
Because my users will be travelling, they will probably not be in a single timezone. So do I constantly change the times of their events on their calendars based on their current IP number or HTML5 geo location? Won't this confuse the users if an event that was at 4PM now shows at 2PM on their calendar?
Are there any best practices for displaying these timezone complexities?
This SO question is similar, but it doesn't really get into how to deal with travelling users and other aspects of my question.