【问题标题】:Programmatically set Start Date & Time in calls Edit view在呼叫编辑视图中以编程方式设置开始日期和时间
【发布时间】:2013-07-03 10:33:41
【问题描述】:

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

代码正在运行,但没有考虑到我的时区,它比英国时间 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';   
 }
}

【问题讨论】:

    标签: php sugarcrm sugarbean


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      利用$timedate->to_display_date_time

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

      【讨论】:

        【解决方案3】:

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

        global $current_user; 
        

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

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

        【讨论】:

          【解决方案4】:

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

          我更改了/include/SugarDateTime.php 文件中的以下函数。现在开始使用我的自定义时区进行创建。

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

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

          【讨论】:

            猜你喜欢
            • 2013-10-17
            • 2015-12-03
            • 2018-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-23
            • 2018-01-01
            • 1970-01-01
            相关资源
            最近更新 更多