不应该更改用户的Drupal语言环境也改变$ user-> timezone?

时间:2011-01-19 01:07:38

标签: drupal timezone

我必须遗漏一些非常明显的东西:

我有一个用户的区域设置设置为America / Los Angeles。当我查看“用户”数据库表时,它们的时区字段值为-28800。这是有道理的; GMT = -28800秒前8小时。

但现在,当用户将其语言环境更改为美国/纽约时,时区的值保持不变,而不是在GMT前5小时切换到-18000。为什么不发生这种变化?如果我在错误的地方查找,我会在哪里找到与其区域设置匹配的时区值?

服务器的时区也设置为美国/洛杉矶,如果这很重要的话。谢谢!

2 个答案:

答案 0 :(得分:0)

听起来像个臭虫。什么版本的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是一个占位符。在此钩子中的传入$ edit上执行print_r,你应该能够找到记录时区变化的位置,然后用该阵列路径替换$ myTimeZone(例如... $ edit ['values'] ['timezone “])。如果它根本没有通过,那么您正在使用的表单更改了语言环境。

如果您使用自己编写的表单,也可以在该表单的提交函数中处理。

答案 1 :(得分:0)

ARGGH - FALSE ALARM。就像我把这一切都包起来一样,我认为可能值得检查我的另一个Drupal网站,看看那里有$ user-> timezone会发生什么。事实证明它正常工作 - 更改用户编辑页面中的区域设置和$ user->时区更改应该如此。因此,我在当前网站的某个地方搞砸了小狗; Drupal本身似乎没问题。道歉浪费你的时间;但无论如何,非常感谢。