首页 > 解决方案 > 检索日期并根据用户时区将其转换为特定时区

问题描述

我想从数据库(s_start)中检索日期并根据数据库中的用户时区(s_timezone)将其转换为特定时区,如(非洲/开罗)我只能检索存储在数据库中的原始日期,我无法转换结果我的控制器代码:

$this->db->select('s_id');    
$this->db->select('s_start');    
$this->db->from('sessions');

$query = $this->db->get($this->event);
    if ($query) {
        return $query->result();
    }
    return NULL;

在此处输入图像描述

html代码:

          <div id="cal-slide-content" class="cal-event-list">
          <ul class="unstyled list-unstyled">
        <% _.each(events, function(event) { %>
        <li>
            <span class="pull-left event <%= event['s_start'] %>"> 
         </span>&nbsp;
            <a href="" data-event-id="<%= event.id %>"
                data-event-class="<%= event['class'] %>" class="event- 
              item">
                <%= event.s_start %>&nbsp;<%= event.u_timezone %>&nbsp; 
                (<%= event.u_name %>)&nbsp;
                 </a>

      </li>
       <% }) %>
   </ul>

}

标签: phpmysqlcodeigniterdatetime

解决方案


$date = new DateTime($result->s_start, new DateTimeZone($result->s_timezone));
$date->setTimezone(new DateTimeZone('Africa/Cairo'));
echo $date->format('Y-m-d H:i:sP') ;

资源

编辑控制器中用于转换时区的函数。

public function _convert_time($result){
    $date = new DateTime($result->s_start, new  DateTimeZone($result->s_timezone));
    $date->setTimezone(new DateTimeZone('Africa/Cairo'));
    return $date->format('Y-m-d H:i:sP') ;
}

现在您可以回显结果

foreach($results as $result){
    echo $this->_convert_time($result);
}

推荐阅读