以编程方式设置开始日期&通话时间编辑视图

时间:2013-07-03 10:33:42

标签: php sugarcrm sugarbean

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

代码正在运行,但它没有考虑我的时区,它落后于英国时间一小时GMT。

如何确保时区正确无误。

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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用$ timedate-> to_display_date_time

global $timedate;
$timedate->to_display_date_time($timedate->nowDb());

答案 2 :(得分:0)

在大多数情况下,需要引用实际创建/更新/删除/等的用户。记录你可以使用

global $current_user; 

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

$this->bean->date_start = $timedate->asUser($timedate->getNow(), $current_user);

答案 3 :(得分: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函数正在调用的区域。当我创造新的领导时,它对我有用。