Try setting the locale in PHP for the current application in code.
- run in MYSQL : SELECT @@system_time_zone;
- Add this to the first line in PHP code, date_default_timezone_set(‘US/Eastern’);
- Replace ‘US/Eastern’ in Step 2, with the timezone value you got from Step 1.
- In codeigniter, you can place Step 2 line in config.php
- If there are errors, use the right timezones here:
- https://www.php.net/manual/en/timezones.america.php
- date_default_timezone_set(‘America/New_York’); used for aspa and webhooks.
function getCurrentDatabaseTime() {
$ci =& get_instance();
$ci->load->database();
$query = $ci->db->query('SELECT NOW() as `current_time`;');
// if exist
$results = array();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row)
{
return $row;
}
}
return FALSE;
}
function getCurrentDatabaseTimezone() {
//SELECT @@system_time_zone
$ci =& get_instance();
$ci->load->database();
$query = $ci->db->query('SELECT @@system_time_zone as `current_time_zone`;');
// if exist
$results = array();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row)
{
return $row;
}
}
return FALSE;
}
function getPacificTime($timeString) {
// Right now it's about four minutes before 1 PM, PST.
$pst = new DateTimeZone('America/Los_Angeles');
//$three_hours_ago = new DateTime('-3 hours', $pst); // first argument uses strtotime parsing
$now = new DateTime($timeString, $pst); // first argument uses strtotime parsing
//echo $three_hours_ago->format('Y-m-d H:i:s'); // "2010-06-15 09:56:36"
return $now->format('Y-m-d H:i:s');
}
// inside a controller , index()
public function index() {
$this->load->helper('common');
$current_timezone_array = getCurrentDatabaseTimezone();
$current_time_array = getCurrentDatabaseTime();
echo 'Current Database Timezone: '.$current_timezone_array['current_time_zone'];
echo '<hr>';
echo 'Current Database Time: '.$current_time_array['current_time'];
echo '<hr>';
echo 'Current PHP Server Time: '.date('Y-m-d H:i:s');
echo '<hr>';
echo 'Current Pacific Time: '.getPacificTime('now');
if ($current_time_array['current_time'] != date('Y-m-d H:i:s')) echo '<hr><font color=red>Possible time issues! Database time and server time mismatch!</font><hr>';
else echo '<hr><font color=green>Good! Database time and server time matches!</font><hr>';
// application should have mysql time and server time matching for things to work properly.
// see: https://apps.badjoerichards.com/apps/developerhack/deal-time-mismtach-mysql-records-datey-m-d-php-not-match-mysqls-server-time/
}