Reputation: 83
In PHP, how do I get the current time, in UTC, without hard coding knowledge of where my hosting provider is?
For example, I tried the following:
time() + strtotime('January 1, 2000')-strtotime('January 1, 2000 UTC')
and find that it reports a time that is one hour ahead of actual UTC time. I tried this on two different hosting providers in two different time zones with the same results.
Is there a reliable (and, hopefully, cleaner) way to accurately get the UTC time?
I am limited to PHP 4.4.9 so I cannot use the new timezone stuff added to PHP5.
Thanks, in advance.
Upvotes: 7
Views: 9903
Reputation: 83632
$utcTtime = gmmktime();
$unixTimestamp = time();
gmmktime
: Get Unix timestamp for a GMT date
Upvotes: 0
Reputation: 55633
Does this work for php 4.4.9?
echo gmdate('Y-m-d H:i:s', time());
or if you want it for a specific date:
$time = strtotime('January 1, 2000 UTC');
if($time){
echo gmdate('Y-m-d H:i:s', $time);
}
Upvotes: 0
Reputation: 5416
$time = new DateTime('now', new DateTimeZone('UTC'));
echo $time->format('F j, Y H:i:s');
Upvotes: 13
Reputation: 786
This seems to work for me. Of course, you'll need to test it on PHP 4 since all of my servers have PHP 5, but the manual claims this should work for PHP 4.
$t = time();
$x = $t+date("Z",$t);
echo strftime("%B %d, %Y @ %H:%M:%S UTC", $x);
First time around, I forgot that the date could change between the call to time() and date().
Upvotes: 8