skip to Main Content

The UTC day 2022-12-11 starts at unix time 1670716800 (which is obviously divisible by 24*3600).

In PHP, I can convert it from left to right this way:

$Date = "2022-12-11";
echo strtotime ($Date." 00:00 UTC"); 

As expected, the output is 1670716800.

But how to convert it back? If I do getdate(1670716800), I get a date with a time, but in my local time zone, whereas I want UTC.

I do not want to use object oriented PHP if this can be avoided.

3

Answers


  1. Chosen as BEST ANSWER

    gmdate("Y-m-d H:i:s", 1670716800) returns "2022-12-11 00:00:00".

    gmdate("Y-m-d H:i:s") returns the current GMT/UTC time in that format (since the GMT time is defined to be equal to the UTC time).


  2. $timestamp = 1607980736;
    $utc_date_time = date('Y-m-d H:i:s', $timestamp);
    echo $utc_date_time;
    

    Output:
    2021-12-11 16:45:36

    Login or Signup to reply.
  3. My timezone is UTC so you will get different results, but use the date_default_timezone_set() function to dafine what the date() function will do with the timestamp

    $Date = "2022-12-11";
    $tstamp = strtotime ($Date." 00:00:00 UTC");
    
    echo date_default_timezone_get() . '-';
    echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL. PHP_EOL;
    
    
    date_default_timezone_set('America/Los_Angeles');
    echo date_default_timezone_get() . '-';
    echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL. PHP_EOL;
    
    date_default_timezone_set('Australia/Brisbane');
    echo date_default_timezone_get()  . '-';
    echo date('Y/m/d H:i:s', $tstamp) . PHP_EOL;
    

    RESULTs

    UTC-2022/12/11 00:00:00
    
    America/Los_Angeles-2022/12/10 16:00:00
    
    Australia/Brisbane-2022/12/11 10:00:00
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search