您的位置:首页 > 编程语言 > PHP开发

在php中让用户自定义时区 正确显示当前时间

2008-06-25 16:13 796 查看
php是外国人开发的,所以经常有很多东西不太好用,时间日期就是其中之一,经常直接显示时间日期(例如:date("Y-m-dH:i:s"))默认为UTC时间,表现是和北京时间差8个小时,因此我们需要将其+8个小时,原理是我们正好位于时区的东8区,但是这个问题是受到php.ini配置的date.timezone影响,当我们将其设置为Asia/Shang或Asia/Chongqing或者其他的东8区,显示出来的将是北京时间,或者在输出时间之前使用date_default_timezone_set()设置时区,也能正确的显示北京时间,问题是这样做都是相当的不灵活。update:经测试,使用gmdate("U")是不正确的获取方式,与time()无别,只有使用time()-date('Z')才能做到获得UTC时间戳!特此更正,向各位致歉!谢谢支持。--2008-3-1221:04:25以下是从DZ中挖出来的完整定制时区的列表代码,可以方便今后的使用了咯。

<selectname="timeoffsetnew">

<optionvalue="9999"selected="selected">-使用默认-</option>

<optionvalue="-12">(GMT-12:00)Eniwetok,Kwajalein</option>

<optionvalue="-11">(GMT-11:00)MidwayIsland,Samoa</option>

<optionvalue="-10">(GMT-10:00)Hawaii</option>

<optionvalue="-9">(GMT-09:00)Alaska</option>

<optionvalue="-8">(GMT-08:00)PacificTime(US&Canada),Tijuana</option>

<optionvalue="-7">(GMT-07:00)MountainTime(US&Canada),Arizona</option>

<optionvalue="-6">(GMT-06:00)CentralTime(US&Canada),MexicoCity</option>

<optionvalue="-5">(GMT-05:00)EasternTime(US&Canada),Bogota,Lima,Quito</option>

<optionvalue="-4">(GMT-04:00)AtlanticTime(Canada),Caracas,LaPaz</option>

<optionvalue="-3.5">(GMT-03:30)Newfoundland</option>

<optionvalue="-3">(GMT-03:00)Brassila,BuenosAires,Georgetown,FalklandIs</option>

<optionvalue="-2">(GMT-02:00)Mid-Atlantic,AscensionIs.,St.Helena</option>

<optionvalue="-1">(GMT-01:00)Azores,CapeVerdeIslands</option>

<optionvalue="0">(GMT)Casablanca,Dublin,Edinburgh,London,Lisbon,Monrovia</option>

<optionvalue="1">(GMT+01:00)Amsterdam,Berlin,Brussels,Madrid,Paris,Rome</option>

<optionvalue="2">(GMT+02:00)Cairo,Helsinki,Kaliningrad,SouthAfrica</option>

<optionvalue="3">(GMT+03:00)Baghdad,Riyadh,Moscow,Nairobi</option>

<optionvalue="3.5">(GMT+03:30)Tehran</option>

<optionvalue="4">(GMT+04:00)AbuDhabi,Baku,Muscat,Tbilisi</option>

<optionvalue="4.5">(GMT+04:30)Kabul</option>

<optionvalue="5">(GMT+05:00)Ekaterinburg,Islamabad,Karachi,Tashkent</option>

<optionvalue="5.5">(GMT+05:30)Bombay,Calcutta,Madras,NewDelhi</option>

<optionvalue="5.75">(GMT+05:45)Katmandu</option>

<optionvalue="6">(GMT+06:00)Almaty,Colombo,Dhaka,Novosibirsk</option>

<optionvalue="6.5">(GMT+06:30)Rangoon</option>

<optionvalue="7">(GMT+07:00)Bangkok,Hanoi,Jakarta</option>

<optionvalue="8">(GMT+08:00)Beijing,HongKong,Perth,Singapore,Taipei</option>

<optionvalue="9">(GMT+09:00)Osaka,Sapporo,Seoul,Tokyo,Yakutsk</option>

<optionvalue="9.5">(GMT+09:30)Adelaide,Darwin</option>

<optionvalue="10">(GMT+10:00)Canberra,Guam,Melbourne,Sydney,Vladivostok</option>

<optionvalue="11">(GMT+11:00)Magadan,NewCaledonia,SolomonIslands</option>

<optionvalue="12">(GMT+12:00)Auckland,Wellington,Fiji,MarshallIsland</option>

</select>


或是修改PHP.INC文件

[Date]
;Definesthedefaulttimezoneusedbythedatefunctions
date.timezone=PRC

就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: