Geking poe
Geking poe

Reputation: 95

php timezone not matching with current time on server

i am using following codes to get current time on server as per timezone parameter but i am getting wrong output. About 10/20 minutes delay then server time. And it also not gets updated. How to solve it? any idea?

<?php

function server_time_as_per_users_zone($users_zone){
  $dateTime = new DateTime('now', new DateTimeZone($users_zone));
  $r = $dateTime->format("d-m-Y h:m A");
  return $r;
}

echo server_time_as_per_users_zone("Asia/Dhaka");

Upvotes: 1

Views: 812

Answers (1)

RiggsFolly
RiggsFolly

Reputation: 94682

You are using a wrong format mask. The m stands for month number and not minutes.

Change it to

function server_time_as_per_users_zone($users_zone){
    $dateTime = new DateTime('now', new DateTimeZone($users_zone));
    $r = $dateTime->format("d-m-Y h:i A");
    return $r;
}

echo 'UTC           - ' . server_time_as_per_users_zone("UTC").PHP_EOL;
echo 'Europe/London - ' . server_time_as_per_users_zone("Europe/London").PHP_EOL;
echo 'Asia/Dhaka    - ' . server_time_as_per_users_zone("Asia/Dhaka").PHP_EOL;

RESULT:

UTC           - 19-04-2017 05:40:23 PM
Europe/London - 19-04-2017 06:40:23 PM
Asia/Dhaka    - 19-04-2017 11:40:23 PM

Upvotes: 2

Related Questions