Я преобразую все введенные пользователем даты и времени в местное время в UTC и сохраню их в базе данныхПри обратном отображении я конвертирую время UTC в часовой пояс, который установлен в их профиле.Это хорошо?
Я думаю, что это достаточно хорошо.Помимо сохранения часового пояса пользователя в профиле, вы также можете позволить клиенту (например, javascript) преобразовывать время UTC в соответствии с часовым поясом компьютера пользователя.
Обратите внимание на некоторую документацию MySQL в отношении часового пояса и работы сервера / клиента:
часовых поясов для каждого подключения. Каждый подключающийся клиент имеет свой собственный часовой пояснастройка, заданная сессионной переменной time_zone.Первоначально переменная сеанса берет свое значение из глобальной переменной time_zone, но клиент может изменить свой собственный часовой пояс с помощью следующего оператора: mysql> SET time_zone = timezone;
Итак, обычно,в предложенном вами решении все в порядке, но не позволяйте фактической смене часового пояса сервера или клиента застать вас врасплох.
Пока вы можете конвертировать в / из любого часового пояса из ваших сохраненных записей БД, это все, что вам нужно.
То, что вы описали, будет работать.