date_default_timezone_set没有给出准确的时间

I want to get date and time, so My code is

<?php

date_default_timezone_set('Asia/Bangkok');
if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
}

if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone');
}
 echo "<br>".date('H:i:s');

?>

but The time result is faster than real time 7 hours

How do I fix this problem?

Try this..

Servers should be set to UTC.

$now = new DateTime();
$now->setTimezone(new DateTimeZone('Asia/Bangkok'));
echo $now->format('g:i A');

Ref:http://php.net/manual/en/datetime.settimezone.php

http://php.net/manual/en/timezones.asia.php

Demo:https://eval.in/469271