2

我正在尝试在记录呼叫时将开始日期和时间自动设置为用户当前的日期和时间。这是在加载视图之前设置的。

该代码正在运行,但没有考虑到我的时区,它比英国时间格林威治标准时间晚了一个小时。

如何确保时区正确。

class CustomCallsController extends SugarController
{
    public function action_log_inbound()
{

    global $timedate;

    if(!isset($timedate) || empty($timedate))
    {
        $timedate = new TimeDate();
    }

    // get user for calculation
    $user = (empty($user)) ? $this->user : $user;

    $this->bean->direction = 'Inbound'; 
    $this->bean->date_start = $timedate->asUser($timedate->getNow(), $user);


    echo $this->bean->date_start;

    $this->view = 'edit';   
 }
}
4

4 回答 4

1

上面的代码是正确的,我没有在用户设置中正确设置时区。它设置为 GMT 而不是 GMT +1

于 2013-07-03T11:08:22.620 回答
0

我搜索了很多以更改 SugarCRM 默认 GMT 时区。当我创建新的潜在客户时,创建日期和修改日期将随 GMT 时间更新。最后我改变了 Sugar 核心文件来解决这个问题。

我已经更改了/include/SugarDateTime.php文件中存在的以下功能。现在使用我的自定义时区进行创建。

public function setTimezone ($timezone)
    {
        // my custom timezone
        $timezone = "America/Los_Angeles";
        parent::setTimezone($timezone);
        return $this;
    }

注意:它将反映此 setTimezone 函数正在调用的那些区域。当我创建新的潜在客户时,它对我有用。

于 2014-11-26T16:53:49.607 回答
0

在大多数情况下,当需要参考实际创建/更新/删除/等的用户时。您可能会使用的记录

global $current_user; 

然后您的代码可能如下所示:

$this->bean->date_start = $timedate->asUser($timedate->getNow(), $current_user);
于 2013-07-21T07:51:56.630 回答
0

利用 $timedate->to_display_date_time

global $timedate;
$timedate->to_display_date_time($timedate->nowDb());
于 2013-07-11T04:21:07.917 回答