PHP中date()函数取得时间错误解决方法

通过date()函数获取时间后,发现小时时间不对,比现在的时间小8个小时,无论用H,还是用h都一样,这个是因为当前获取的是格林威治时间,与北京时间相差8小时。

解决方法如下:

1、修改php.ini配置文件

打开php.ini文件,一般在php配置根目录下,找到其中的 ;date.timezone,删掉前面的分号,并改为date timezone = PRC。保存,重启Apahce服务即可(有时用restart会有问题,先stop然后start就行了)。

2、加上date_default_timezone_set(timezone_identifier)函数

这个函数的意思是,设置当前时区,对时间进行初始化,在页头或获取时间语句前加上这句话。

例如:

date_default_timezone_set(PRC);

echo date("Y-m-d H-i-s");

参数如下设置:

date_default_timezone_set(PRC) –设置为北京时间,PRC代表中华人民共和国

date_default_timezone_set(‘Asia/Shanghai’) –设置为上海时间,大陆可用的还有‘Chongqi’(重庆)、‘Urumqi’(乌鲁木齐)同样可以的

港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)

新加坡地区:Asia/Singapore (好像就是没看到北京的)

此函数永远会返回True,但一定要输入timezone_identifier,不然会报错。

下面是所有的时区标识符:(供大家参考):

  1. CET
  2. CST6CDT
  3. Cuba
  4. EET
  5. Egypt
  6. Eire
  7. EST
  8. EST5EDT
  9. Etc/GMT
  10. Etc/GMT+0
  11. Etc/GMT+1
  12. Etc/GMT+10
  13. Etc/GMT+11
  14. Etc/GMT+12
  15. Etc/GMT+2
  16. Etc/GMT+3
  17. Etc/GMT+4
  18. Etc/GMT+5
  19. Etc/GMT+6
  20. Etc/GMT+7
  21. Etc/GMT+8
  22. Etc/GMT+9
  23. Etc/GMT-0
  24. Etc/GMT-1
  25. Etc/GMT-10
  26. Etc/GMT-11
  27. Etc/GMT-12
  28. Etc/GMT-13
  29. Etc/GMT-14
  30. Etc/GMT-2
  31. Etc/GMT-3
  32. Etc/GMT-4
  33. Etc/GMT-5
  34. Etc/GMT-6
  35. Etc/GMT-7
  36. Etc/GMT-8
  37. Etc/GMT-9
  38. Etc/GMT0
  39. Etc/Greenwich
  40. Etc/UCT
  41. Etc/Universal
  42. Etc/UTC
  43. Etc/Zulu
  44. Factory
  45. GB
  46. GB-Eire
  47. GMT
  48. GMT+0
  49. GMT-0
  50. GMT0
  51. Greenwich
  52. Hongkong
  53. HST
  54. Iceland
  55. Iran
  56. Israel
  57. Jamaica
  58. Japan
  59. Kwajalein
  60. Libya
  61. MET
  62. MST
  63. MST7MDT
  64. Navajo
  65. NZ
  66. NZ-CHAT
  67. Poland
  68. Portugal
  69. PRC
  70. PST8PDT
  71. ROC
  72. ROK
  73. Singapore
  74. Turkey
  75. UCT
  76. Universal
  77. UTC
  78. W-SU
  79. WET