Home  >  Article  >  Backend Development  >  What is the difference between date and gmdate in PHP? _PHP Tutorial

What is the difference between date and gmdate in PHP? _PHP Tutorial

WBOY
WBOYOriginal
2016-07-13 10:18:36688browse

What is the difference between date and gmdate in PHP?

1. What is the difference between date and gmdate in PHP?

There are two formatting functions for time in PHP: date() and gmdate(). The description in the official document is:

Date — Format a local time/date

gmdate — Format a GMT/UTC date/time, returning Greenwich Mean Time (GMT).

For example, our current time zone is +8, then the time returned by the server running the following script should be like this:

The current time is assumed to be 2007-03-14 12:15:27

Echo date(‘Y-m-d H:i:s’, time()); The output is: 2007-03-14 12:15:27

echo gmdate(‘Y-m-d H:i:s’, time()); The output is: 2007-03-14 04:15:27

But this is only the result of running PHP under Linux+Apache. If it is run under Windows, the two functions return: 2007-03-14 04:15:27.

Therefore, we should give a compatible writing method, use gmdate uniformly, and set the current time zone manually. The writing method is improved as follows:

echo gmdate(‘Y-m-d H:i:s’, time() + 3600 * 8);

In this way, the correct results are obtained regardless of whether it is under Linux+Apache or Windows. Of course, there is another advantage to writing this way. When the website is for the whole world, the website user only needs to set the time zone, and the program will automatically adjust according to the user's time zone. The set time zone is used for time calculation. The information release time in the database only stores the time generated by the current time(). Then the release time seen in China +8 time zone is: 2007-03-14 12:15:27, then in Users in the European +2 time zone will see that the release time of this information is: 2007-03-14 06:15:27, so that all the times of the information will be correct.

2. The impact of modifying PHP’s default time zone on them

Each region has its own local time. On the Internet and in radio communications, the problem of time conversion is particularly prominent. The entire earth is divided into twenty-four time zones, each with its own local time. In international radio or network communication situations, for the sake of unification, a unified time is used, called Universal Time Coordinated (UTC), which is a global standard time set by the world time standard. UTC was originally also known as Greenwich Mean Time (GMT, Greenwich Mean Time), which is the same as the local time in London, UK.

PHP’s default time zone setting is UTC time, and Beijing is located in the East Eighth District of the time zone, eight hours ahead of UTC. Therefore, when using functions such as time() in PHP to obtain the current time, the time obtained is always wrong, showing that it is eight hours different from Beijing time. If you want to display Beijing time correctly, you need to modify the default time zone settings, which can be done in the following two ways.

If you are using an independent server and have permission to modify the configuration file, setting the time zone can be completed by modifying the date.timezone attribute in php.ini. We can set the value of this attribute to one of "Asia/Shang", "Asia/Chongqing", "Etc/GMT-8" or PRC, etc., and then the current time obtained in the PHP script is Beijing time. Modify the PHP configuration file as follows:

Date.timezone = Etc/GMT-8

//Set the default time zone in the configuration file to East 8 District (Beijing time)

If you are using a shared server and do not have permission to modify the configuration file php.ini, and the PHP version is above 5.1.0, you can also call the date_default_timezone_set() function to set the time zone before outputting the time. This function needs to provide a time zone identifier as a parameter, which is the same as the value of the date.timezone attribute in the configuration file. The function is used as follows:

Date_default_timezone_set(‘PRC’);

//Set the time zone before outputting the time, PRC is the People’s Republic of China echo date(‘Y-m-d H:i:s’, time());

//The current time output is Beijing time

3. Test:

1. The code is as follows:

 

Date_default_timezone_set(‘Etc/GMT’);

//Set the time zone before the output time, Etc/GMT is the time standard time

echo(time());

echo(‘
’);

echo date(‘Y-m-d H:i:s’, time());

echo(‘
’);

echo gmdate (“Y-m-d H:i:s”, time());

echo(‘
’);

Date_default_timezone_set(‘PRC’);

//Set the time zone before the output time, PRC is the People's Republic of China

echo(time());

echo(‘
’);

echo date(‘Y-m-d H:i:s’, time());

echo(‘
’);

echo gmdate (“Y-m-d H:i:s”, time());

 ?>

Copy code

2. Result:

 1276257131

 2010-06-11 11:52:11

 2010-06-11 11:52:11

 1276257131

 2010-06-11 19:52:11

 2010-06-11 11:52:11

3. Conclusion:

(1) time(): standard timestamp

Refers to returning the number of seconds since the Unix epoch (00:00:00 on January 1, 1970, Greenwich Mean Time) to the current time (referring to the current GMT standard time). Its value is the same as the time zone set by the PHP system. Nothing to do.

Date(): returns the "custom format" time of the localized time of the current GMT standard time, which is related to the time zone set by the PHP system.

gmdate(): Returns the "custom format" time of the current GMT standard time, which has nothing to do with the time zone set by the PHP system.

(2) unix timestamp: refers to the number of seconds from the current (GMT standard) time to the unix epoch time (1970-01-01 00:00:00);

Code:

 

Date_default_timezone_set(‘Etc/GMT’);

//Set the time zone before the output time, Etc/GMT is the time standard time

echo(strtotime(’1970-01-01 08:00:00′));

echo(‘
’);

Date_default_timezone_set(‘PRC’);

//Set the time zone before the output time, PRC is the People's Republic of China

echo(strtotime(’1970-01-01 08:00:00′));

 ?>

Copy code

Test results:

 28800

 0

strtotime(a): The unix timestamp of the GMT standard time of the current time. If the time zone set by the current PHP system is not the GMT standard time zone, when strtotime(a) is applied, the system will automatically convert time a into the corresponding GMT standard time, and then calculate the unix timestamp of this time. It is related to the time zone set by the php system

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/881293.htmlTechArticleWhat is the difference between date and gmdate in PHP? 1. What is the difference between date and gmdate in PHP? There are two formatting functions for time in PHP: date() and gmdate(). The description in the official document is: dat...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn