Есть ли способ, которым пользователь может установить часовой пояс из (базы данных) своего профиля в codeigniter? - PullRequest
0 голосов
/ 05 июля 2019

Я работаю на странице настроек пользователя, где некоторые настройки по умолчанию для пользователя, такие как часовой пояс пользователя по умолчанию, формат даты пользователя, формат времени пользователя.

Я могу сохранить пользовательские настройки в моей базе данных и получить их. но когда пользователь меняет свой часовой пояс, он устанавливается правильно, но не показывает дату в соответствии с последним часовым поясом.

Например, текущий часовой пояс пользователя - «Азия / Калькутта», и когда он обновляет часовой пояс на любой другой часовой пояс, например «Америка / Нью-Йорк», сведения сохраняются в базе данных, а также отображается текущий часовой пояс «Америка / Нью-Йорк», но он не отражает дату и время 'America / New_York'. он показывает только время «Азия / Калькутта». При повторном входе в систему того же пользователя отображается правильное время в соответствии с последним обновленным часовым поясом.

Я уже пробовал ниже код

$utc_time = $dateinfo; // date from database
$timezone = $ci->session->userdata('user_settings')->TIME_ZONE; // user last updated timezone
$date_obj = new DateTime($utc_time, new DateTimeZone($ci->session->userdata('user_settings')->TIME_ZONE));
$date_obj->setTimeZone(new DateTimeZone($timezone));
$display_date = $date_obj->format(get_datetimeformat() . '(e)');

return $display_date; // show date based on updated timezone

Я ожидаю показать дату и время в зависимости от выбранного часового пояса без повторного входа.

Если кто-нибудь может помочь мне в правильном направлении, это будет очень полезно.

Спасибо

Ответы [ 3 ]

0 голосов
/ 06 июля 2019

Добавьте этот код в контроллер

<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
date_default_timezone_set('Asia/Kolkata');



?>
0 голосов
/ 08 июля 2019

Спасибо за все ответы.Я решил проблему.

Я преобразовал всю функцию date () в gmdate () в моем приложении, так что теперь все даты и время хранятся в UTC в моей базе данных.

Я сделал некоторые изменения в моей вспомогательной функции, как показано ниже, и она работает для меня как шарм.

$date_obj = new DateTime($utc_time, new DateTimeZone('UTC'));

Спасибо !!!

0 голосов
/ 06 июля 2019

В вашем контроллере сделайте это

  $user_timezone = 'Asia/Tokyo'; //make sure you get this data from your user
  date_default_timezone_set($user_timezone); //set it as default according to their time zone.

   echo $user_timezone. "<br>";
   echo date('Y-m-d');
   echo "<br>The time is " . date("h:i:sa");

Дайте мне знать результат.

Надеюсь, что поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...