How to get local timezone in PHP?

34,687

Solution 1

Use a timezone from http://php.net/manual/en/timezones.php

So, for CST use:

<?php
date_default_timezone_set("America/Chicago");

If you only have the timezone abbreviation and not the timezone id then use:

<?php
date_default_timezone_set(timezone_name_from_abbr("CST"));

Solution 2

Although the system and PHP should be on the same timezone, read the docs for date_default_timezone_set() to set the timezone manually.

Note that CST is not a valid timezone setting. Find a valid timezone for your location.

Share:
34,687
Steve
Author by

Steve

Updated on July 23, 2022

Comments

  • Steve
    Steve almost 2 years

    I'm using the date("D, m/d/Y h:i:s A T") function call to get current date time but returned time is different to the time I get when I make date in linux bash command (local time is in CST and php date function returns time in UTC). I've tried using $timezone = @system("date +%Z",$retval); to get timezone in an attempt to set local timezone using date_default_timezone_set() function. But CST seems not a valid timezone_identifier.

    In short, I just need to get the same date and time as local datetime.

  • Jason McCreary
    Jason McCreary over 12 years
    +1 for being first. Note that the user may not be Chicago. Although indeed CT, it's best to use your specific locale.
  • Steve
    Steve over 12 years
    the issue is I need it done programmatically so I can't go and copy the exact valid timezone_identifier each time I need it. The only value I have is CST or UTC and so on...
  • Christopher Manning
    Christopher Manning over 12 years
    @StephaneKouakou I've added sample code for when you only have the timezone abbreviation
  • Steve
    Steve over 12 years
    I think I've found a better function: timezone_name_from_abbr()
  • Praesagus
    Praesagus about 11 years
    if you want to grab the default from *nix server, timezone_name_from_abbr(exec('date +%Z')) saves you from having a static entry
  • rvighne
    rvighne over 10 years
    If this turned out to be the correct answer, please mark it as correct.