Звучит как ошибка. Какая версия Drupal? В любом случае, вы сможете довольно легко это исправить с помощью hook_user. Вам нужно будет сделать user_save и явно определить новое значение часового пояса. Это было бы что-то вроде этого:
function trnAccount_user($op, &$edit, &$account, $category = NULL) {
switch($op) {
case 'update':
user_save($account, array('timezone' => $myTimeZone);
break;
}
$ myTimeZone является заполнителем. Сделайте print_r для входящего $ edit в этом хуке, и вы сможете найти место записи изменения часового пояса, а затем просто замените $ myTimeZone на этот путь массива (например ... $ edit ['values'] ['timezone «]). Если это не происходит вообще, значит, что-то не так с формой, которую вы используете, измените локаль.
Если вы используете форму, которую вы написали самостоятельно, вы также можете обработать это в функции отправки для этой формы.