时区设置问题

转载 2012年03月29日 08:30:55

date(‘Y-m-d H:i:s’)

结果取出来显示的时间总是于本地时间相差8个小时,我的本机是中国标准时间(GTM+8),问题应该是date()取的时间是格林威治时间,那应该怎么配置一下PHP服务器呢?

 

问题原因所在

从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的

也就是显示的时间(无论用什么php命令)都是格林威治标准时间

和我们的时间(北京时间)差了正好8个小时。

有以下3中方法可以恢复正常的时间。

1、最简单的方法就是不要用php5.1以上的版本

2、如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的

上面加上 date_default_timezone_set (‘XXX’);

3、一劳永逸php服务器,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号

date.timezone = PRC,重启http服务(如apache2或iis等)即可

大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了
其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
以上都是我从php官方说明档里整理出来的GMT-8下面的地区,可能会有遗漏
你可以http://www.php.net/docs.php上查到更多的地区
由于程序最后还是会把地名转为时区来计算,所以当你使用的不是内置的区域的时候,程序将自动使用格林威治标准时间

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

默认安装的LAMP环境中,时区默认设置在GMT时间,所以一般得到的时间都会比我们电脑中显示的时间早八个小时(假设你的时间设置正确,并且时区是在东八区)。PHP提供了两个函数用来处理时区的操作:

date_default_timezone_set() 和 date_default_timezone_get()

如果我们希望更改服务器默认的时区,修改 php.ini 文件中的 ;date.timezone = ,添加自己需要的时区,例如 date.timezone = Asia/Chongqing,然后重启服务器就可以了。

用下面这一段代码,可以比较清楚的看到时区变化的影响:

$now = time(); 
echo "The GMT now is : " . date(’Y-m-d H:i:s’, now()) . ‘<br />’ ; 
echo "The local time is : " . date(’Y-m-d H:i:s’, gmt_to_local($now) ) . ‘<br />’; 
date_default_timezone_set(’Asia/Chongqing’); 
echo ‘Set the timezone to :’ . date_default_timezone_get() . "<br />"; 
echo "The GMT now is : " . date(’Y-m-d H:i:s’, now()) . ‘<br />’ ; 
echo "The local time is : " . date(’Y-m-d H:i:s’, gmt_to_local($now) ) . ‘<br />’;

如果我们的站点是面向单一时区的用户,我想采用这个时区的时间来记载没什么问题,或者网站应用的类型并不 Care 时间的差别,那么我们用什么时间做存储都没关系。一旦我们的用户对于时区的影响有较大关系的时候,我想应该统一使用GMT的标准时间来进行存储,在显示的时候再根据用户所在的时区进行显示,这样虽然前端显示每次都需要去计算用户当前的时间,但是对于后台逻辑的统一性应该是大有裨益的。

目前,我们国家已经废除了夏令时的使用,但是世界上仍有其他一些国家在使用夏令时,我们在程序处理的时候应该注意这个问题

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

用PHP获取系统时间时,时间比当前时间少8个小时。原因是PHP.ini中没有设置timezone时,PHP是使用的UTC时间,所以在中国时间要少8小时。

  解决办法:

  1.在PHP.ini文件中修改设置。
   [Date]
   ; Defines the default timezone used by the date functions
   date.timezone = Asia/Shanghai
  这里真是。。。可以设置Shanghai,Chongqin,Hong_Kong,TaiBei...等等,可就是没有找到Beijing,不知道是什么原因。

  2.在PHP程序中运行时设置。
   <?php
    if(date_default_timezone_get() != "1Asia/Shanghai") date_default_timezone_set("Asia/Shanghai");
   ?>
  注意:用"date_default_timezone_get"获得的时间设置中有一个1,也不太清楚是杂回事呢。

  3.在使用时间时自己多加8*3600秒也是行的。
   <?php
    echo date("Y-m-d H:i:s",time()+8*3600);
   ?>

  个人推荐使用第二种方法,如果不能不使用"date_default_timezone_get"或"date_default_timezone_set"时,再使用第三种方法。当然了,如果是自己的服务器,也可以通过设置PHP来设置也是行的。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmera

Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre

Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta

Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala

Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg

Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos

Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka

Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu

Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott

Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli

Africa/Tunis
Africa/Windhoek

美洲时区列表America

America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Araguaina

America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy

America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/San_Juan
America/Argentina/Tucuman

America/Argentina/Ushuaia
America/Aruba
America/Asuncion
America/Atka
America/Bahia

America/Barbados
America/Belem
America/Belize
America/Boa_Vista
America/Bogota

America/Boise
America/Buenos_Aires
America/Cambridge_Bay
America/Campo_Grande
America/Cancun

America/Caracas
America/Catamarca
America/Cayenne
America/Cayman
America/Chicago

America/Chihuahua
America/Coral_Harbour
America/Cordoba
America/Costa_Rica
America/Cuiaba

America/Curacao
America/Danmarkshavn
America/Dawson
America/Dawson_Creek
America/Denver

America/Detroit
America/Dominica
America/Edmonton
America/Eirunepe
America/El_Salvador

America/Ensenada
America/Fort_Wayne
America/Fortaleza
America/Glace_Bay
America/Godthab

America/Goose_Bay
America/Grand_Turk
America/Grenada
America/Guadeloupe
America/Guatemala

America/Guayaquil
America/Guyana
America/Halifax
America/Havana
America/Hermosillo

America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Vevay
America/Indianapolis

America/Inuvik
America/Iqaluit
America/Jamaica
America/Jujuy
America/Juneau

America/Kentucky/Louisville
America/Kentucky/Monticello
America/Knox_IN
America/La_Paz
America/Lima

America/Los_Angeles
America/Louisville
America/Maceio
America/Managua
America/Manaus

America/Martinique
America/Mazatlan
America/Mendoza
America/Menominee
America/Merida

America/Mexico_City
America/Miquelon
America/Monterrey
America/Montevideo
America/Montreal

America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome

America/Noronha
America/North_Dakota/Center
America/Panama
America/Pangnirtung
America/Paramaribo

America/Phoenix
America/Port-au-Prince
America/Port_of_Spain
America/Porto_Acre
America/Porto_Velho

America/Puerto_Rico
America/Rainy_River
America/Rankin_Inlet
America/Recife
America/Regina

America/Rio_Branco
America/Rosario
America/Santiago
America/Santo_Domingo
America/Sao_Paulo

America/Scoresbysund
America/Shiprock
America/St_Johns
America/St_Kitts
America/St_Lucia

America/St_Thomas
America/St_Vincent
America/Swift_Current
America/Tegucigalpa
America/Thule

America/Thunder_Bay
America/Tijuana
America/Toronto
America/Tortola
America/Vancouver

America/Virgin
America/Whitehorse
America/Winnipeg
America/Yakutat
America/Yellowknife

Brazil/Acre
Brazil/DeNoronha
Brazil/East
Brazil/West
Canada/Atlantic

Canada/Central
Canada/East-Saskatchewan
Canada/Eastern
Canada/Mountain
Canada/Newfoundland

Canada/Pacific
Canada/Saskatchewan
Canada/Yukon
Chile/Continental
Chile/EasterIsland

Mexico/BajaNorte
Mexico/BajaSur
Mexico/General
US/Alaska
US/Aleutian

US/Arizona
US/Central
US/East-Indiana
US/Eastern
US/Hawaii

US/Indiana-Starke
US/Michigan
US/Mountain
US/Pacific
US/Pacific-New

US/Samoa

南极洲时区列表 Antarctica

Antarctica/Casey
Antarctica/Davis
Antarctica/DumontDUrville
Antarctica/Mawson
Antarctica/McMurdo

Antarctica/Palmer
Antarctica/Rothera
Antarctica/South_Pole
Antarctica/Syowa
Antarctica/Vostok

北冰洋时区列表Arctic

Arctic/Longyearbyen

亚洲时区列表 Asia

Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau

Asia/Aqtobe
Asia/Ashgabat
Asia/Ashkhabad
Asia/Baghdad
Asia/Bahrain

Asia/Baku
Asia/Bangkok
Asia/Beirut
Asia/Bishkek
Asia/Brunei

Asia/Calcutta
Asia/Choibalsan
Asia/Chongqing
Asia/Chungking
Asia/Colombo

Asia/Dacca
Asia/Damascus
Asia/Dhaka
Asia/Dili
Asia/Dubai

Asia/Dushanbe
Asia/Gaza
Asia/Harbin
Asia/Hong_Kong
Asia/Hovd

Asia/Irkutsk
Asia/Istanbul
Asia/Jakarta
Asia/Jayapura
Asia/Jerusalem

Asia/Kabul
Asia/Kamchatka
Asia/Karachi
Asia/Kashgar
Asia/Katmandu

Asia/Krasnoyarsk
Asia/Kuala_Lumpur
Asia/Kuching
Asia/Kuwait
Asia/Macao

Asia/Macau
Asia/Magadan
Asia/Makassar
Asia/Manila
Asia/Muscat

Asia/Nicosia
Asia/Novosibirsk
Asia/Omsk
Asia/Oral
Asia/Phnom_Penh

Asia/Pontianak
Asia/Pyongyang
Asia/Qatar
Asia/Qyzylorda
Asia/Rangoon

Asia/Riyadh
Asia/Saigon
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul

Asia/Shanghai
Asia/Singapore
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi

Asia/Tehran
Asia/Tel_Aviv
Asia/Thimbu
Asia/Thimphu
Asia/Tokyo

Asia/Ujung_Pandang
Asia/Ulaanbaatar
Asia/Ulan_Bator
Asia/Urumqi
Asia/Vientiane

Asia/Vladivostok
Asia/Yakutsk
Asia/Yekaterinburg
Asia/Yerevan
Indian/Antananarivo

Indian/Chagos
Indian/Christmas
Indian/Cocos
Indian/Comoro
Indian/Kerguelen

Indian/Mahe
Indian/Maldives
Indian/Mauritius
Indian/Mayotte
Indian/Reunion

大西洋地区时区列表 Atlantic

Atlantic/Azores
Atlantic/Bermuda
Atlantic/Canary
Atlantic/Cape_Verde
Atlantic/Faeroe

Atlantic/Jan_Mayen
Atlantic/Madeira
Atlantic/Reykjavik
Atlantic/South_Georgia
Atlantic/St_Helena

Atlantic/Stanley

澳大利亚时区列表 Australia

Australia/ACT
Australia/Adelaide
Australia/Brisbane
Australia/Broken_Hill
Australia/Canberra

Australia/Currie
Australia/Darwin
Australia/Hobart
Australia/LHI
Australia/Lindeman

Australia/Lord_Howe
Australia/Melbourne
Australia/North
Australia/NSW
Australia/Perth

Australia/Queensland
Australia/South
Australia/Sydney
Australia/Tasmania
Australia/Victoria

Australia/West
Australia/Yancowinna

欧洲时区列表 Europe

Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belfast
Europe/Belgrade

Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Bucharest
Europe/Budapest

Europe/Chisinau
Europe/Copenhagen
Europe/Dublin
Europe/Gibraltar
Europe/Helsinki

Europe/Istanbul
Europe/Kaliningrad
Europe/Kiev
Europe/Lisbon
Europe/Ljubljana

Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Mariehamn

Europe/Minsk
Europe/Monaco
Europe/Moscow
Europe/Nicosia
Europe/Oslo

Europe/Paris
Europe/Prague
Europe/Riga
Europe/Rome
Europe/Samara

Europe/San_Marino
Europe/Sarajevo
Europe/Simferopol
Europe/Skopje
Europe/Sofia

Europe/Stockholm
Europe/Tallinn
Europe/Tirane
Europe/Tiraspol
Europe/Uzhgorod

Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Vilnius
Europe/Warsaw

Europe/Zagreb
Europe/Zaporozhye
Europe/Zurich

太平洋地区时区列表 Pacific

Pacific/Apia
Pacific/Auckland
Pacific/Chatham
Pacific/Easter
Pacific/Efate

Pacific/Enderbury
Pacific/Fakaofo
Pacific/Fiji
Pacific/Funafuti
Pacific/Galapagos

Pacific/Gambier
Pacific/Guadalcanal
Pacific/Guam
Pacific/Honolulu
Pacific/Johnston

Pacific/Kiritimati
Pacific/Kosrae
Pacific/Kwajalein
Pacific/Majuro
Pacific/Marquesas

Pacific/Midway
Pacific/Nauru
Pacific/Niue
Pacific/Norfolk
Pacific/Noumea

Pacific/Pago_Pago
Pacific/Palau
Pacific/Pitcairn
Pacific/Ponape
Pacific/Port_Moresby

Pacific/Rarotonga
Pacific/Saipan
Pacific/Samoa
Pacific/Tahiti
Pacific/Tarawa

Pacific/Tongatapu
Pacific/Truk
Pacific/Wake
Pacific/Wallis
Pacific/Yap

其它时区列表 Others

CET
CST6CDT
Cuba
EET
Egypt

Eire
EST
EST5EDT
Etc/GMT
Etc/GMT+0

Etc/GMT+1
Etc/GMT+10
Etc/GMT+11
Etc/GMT+12
Etc/GMT+2

Etc/GMT+3
Etc/GMT+4
Etc/GMT+5
Etc/GMT+6
Etc/GMT+7

Etc/GMT+8
Etc/GMT+9
Etc/GMT-0
Etc/GMT-1
Etc/GMT-10

Etc/GMT-11
Etc/GMT-12
Etc/GMT-13
Etc/GMT-14
Etc/GMT-2

Etc/GMT-3
Etc/GMT-4
Etc/GMT-5
Etc/GMT-6
Etc/GMT-7

Etc/GMT-8
Etc/GMT-9
Etc/GMT0
Etc/Greenwich
Etc/UCT

Etc/Universal
Etc/UTC
Etc/Zulu
Factory
GB

GB-Eire
GMT
GMT+0
GMT-0
GMT0

Greenwich
Hongkong
HST
Iceland
Iran

Israel
Jamaica
Japan
Kwajalein
Libya

MET
MST
MST7MDT
Navajo
NZ

NZ-CHAT
Poland
Portugal
PRC
PST8PDT

ROC
ROK
Singapore
Turkey
UCT

Universal
UTC
W-SU
WET
Zulu


相关文章推荐

android 时区表以及设置系统时区

从Android系统源码复制出来的 马朱罗 中途岛 檀香山 安克雷奇 美国太平洋时间 (洛杉矶) 美国太平洋时间 (提华纳) 美国山区时间 (...

IIS时间格式设置

IIS时间格式调整:(已解决)今天在用IIS7的时候发现一个关于时间格式的问题,当我在ASP中使用now()时间函数的时候,日期是以“/”来分隔,而不是以“-”来分隔的,使得我在运行程序的时候老出错,...
  • smeyou
  • smeyou
  • 2011年07月20日 12:17
  • 7221

liunx服务器时间、时区设置(解决快、慢8小时问题)

1、查看当前使用的时区: cat /etc/sysconfig/clock # The timezone of the system is defined by the contents of /e...

Phoenix Tips (5) 使用任意时间戳

在Property里面设置

IIS 日志记录时间和实际时间 不一样

今天偶然发现 2003 系统IIS 日志记录时间和实际时间总是差了8个小时,也就是慢了8个小时.苦苦找了半天才发现如下办法能解决 ,特发来分享下 解决1:如果 IIS日志记录默认使用的是W3C扩展日志...

IIS7日志中时间与系统时间不一致的原因

最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前。 本以为是系统时间设置错误,检查后一切正常。后查询资料,原来是这个原因: ...

PHP 亚洲常用时区编码

PHP亚洲常用时区编码: 亚洲(Asia) 时区编码 中国(上海) Asia/Shanghai 中国(乌鲁木齐) Asia/Urumqi 中国(香港) Asia/Hong...
  • lgyaxx
  • lgyaxx
  • 2017年03月18日 16:59
  • 1179

Java时区TimeZone与操作系统时区不一致

今天发现刚写的Java小工具的日期功能出了问题。具体时间慢了11个小时。 检查了XP系统的日期、时区以及注册表中的相关选项,均无问题。 运行下列代码 import java.util.TimeZ...

PHP的php.ini时区设置问题

PHP的php.ini时区设置问题2009-09-10 15:40从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的,也就是显示的时间(无论用什么ph...
  • hsg77
  • hsg77
  • 2011年06月23日 15:42
  • 1481

关于XAMPP软件设置时区的问题

之前学习PHP都是使用APM-serv的集成环境,现在换成了XAMPP。装好环境以后首先就遇到了设置时区的问题,跟之前环境的设置方法有些区别,所以在此做个记录。 1、之前APM-serv的修改方法是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:时区设置问题
举报原因:
原因补充:

(最多只允许输入30个字)