我彻底被date、gmdate搞晕了。
按照php手册中说明:

date — 格式化一个本地时间/日期
gmdate — 格式化一个 GMT/UTC 日期/时间,返回的是格林威治标准时(GMT)。

这个本地时间是什么意思?是加上时区的时间吗?

推荐图书

  • O'Reilly:Head First PHP & MySQL(中文版)


1个回答

关于这2个函数的用法,可以看例子:
假设现在当前时间为:2011-09-02 12:00,时区为+8

echo date(‘Y-m-d H:i:s’, time());   //输出为:2011-09-02 12:00:00
echo gmdate(‘Y-m-d H:i:s’, time()); //输出为:2011-09-02 04:00:00

所以本地时间是加上时区的时间。
如果要统一结果,可以这样:

echo gmdate(‘Y-m-d H:i:s’, time() + 3600 * 8);  //输出为:2011-09-02 12:00:00

顺便贴一下:

time()

标准时间戳:指返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间(指的是当前GMT标准时间)的秒数,跟php系统设置的时区无关

date()

返回的是当前 GMT标准时间的本地化时间的“自定义格式”时间,跟php系统设置的时区有关

gmdate()

返回的是当前 GMT标准时间的“自定义格式”时间,跟php系统设置的时区无关

strtotime(a)

当前时间的GMT标准时间的unix时间戳,如果当前php系统的设置的时区不是GMT标准时区,则在应用strtotime(a)时,系统会自动把时间a折算成相应的GMT标准时间,然后计算这个时间的unix时间戳。跟php系统设置的时区有关

unix时间戳:指的是当前(GMT标准)时间离unix纪元时间(1970-01-01 00:00:00)的秒数;