I understand that when Moodle stores a date in its database it converts it into an integer that counts the seconds since a certain fixed date in the past. During this conversion it takes the timezone into account. When Moodle prints a date from the database it does this process in reverse, converting the integer back into a time in the user's timezone. That way, if the user changes timezone between entering the date and looking at it again then the date gets shifted as well.
That all sounded quite clever to me until I started worrying over summer time. What happens when during summer the user creates a date in winter? The date shows correctly while the user is in summertime. But when the timezone is changed to agree with winter time will all the previously created dates be off by an hour?