$7.49 .com domain with free InstantPage Website Builder$1.99 Web Hosting   捷飞网络官方淘宝店   Godaddy 优惠码
返回列表 发帖
分享到:




[应用&技术] php如何获得客户端时区,我想根据不同客户端的时区把时间戳显示为当地的时间?

用js判断客户端的时区,然后写入cookie,然后php里根据cookie的时区来输出对应时间2 }  e! _5 T: `0 c/ e& o
为什么用js?因为只有js才能获得客户端的时间,主要就是获取时间,然后进行时区判断
8 ~% N' v! t6 M4 z2 o0 n; \9 Evar d = new Date();
' s* A2 H" i- i$ x8 _. l( m7 l' Y0 ~. Uvar tos = 0 - d.getTimezoneOffset() * 60;, Z) O% s3 n; g9 E% m9 {; o  {
和格林威治时间的秒差
0 E3 {' w/ W& w" U+ E8 w# d
7 e$ j3 ^. S% u7 K- |/ F% n5 X3 a9 ?6 J) }2 f5 f
3 N; O+ c4 g6 {1 g2 Z7 l
可以用JS取得客户端时间.    将JS放在PHP程序里面就可以了. 如下:( y, G5 _! K6 L5 \
<form>    z; }7 N5 d( H/ t& W# D
  <div   ID=serverTime> </div>  3 ?* H% m, p2 w- \7 e6 A6 Z( w
  <div   ID=localTime> </div>  
( |, f- {# V/ ~1 z( U) M  </form>  
6 B$ w3 h: H7 L" D! V9 L  <script>  2 G9 W$ I) K$ D: A
  var   serverTime   =   '<?php   print   date("Y-m-d   G:i:s");?>';  ! M" k- P6 u8 A6 J  H0 ^# W
  var   d   =   new   Date();  1 k5 Y& k; ?3 h1 _" G# z
  var   localTime   =   d.getYear()   +   '-'   +   (d.getMonth()   +   1)   +   '-'   +   d.getDate()   +   '   '   +   d.getHours()   +   ':'   +   d.getMinutes()   +   ':'   +   d.getSeconds();  
' z, u" Q) m( u9 G! J# s0 O  document.all['localTime'].innerText   =   'LOCALTIME:'   +   localTime;  
, C8 h) k: v9 S# Y# ?5 J  document.all['serverTime'].innerText   =   'SERVERTIME:'   +   serverTime;  0 w, u% u! N" |/ A1 J
  </script>7 C3 k* p: [6 h
8 R9 E8 G8 w9 J
或者:! Y+ H( Y7 X0 G& ?2 N7 |5 o

# H$ X0 O6 g0 ~8 Y5 l; a  <script>  9 t) |$ Z( w. C4 t9 e
  var   now   =   new   Date();  
1 I) M) }9 W& h, t6 O7 y  alert(now.getYear()+"-"+(now.getMonth+1)+"-"+now.getDate()+"   "+now.getHours()+":"+now.getMinutes()+":"+now.getSeconds());  / i0 ~6 w+ ]) `# U- b
  </script>, A8 w5 p4 ]) k5 Z$ w& Q* Q; [

! G7 _4 \- h  q# q- p参考: http://www.justwinit.cn/post/1654/
6 H& F, |2 M5 ?+ J8 h% p. w* APHP5.2.4之前的版本无需设置时区。下面是修改PHP时区的三个办法。
& Q+ C5 b" o, R5 \  H6 V" B% L
8 T$ O' k0 ~; p, S- ^. k1、修改PHP.ini这个文件
8 {% _% e: |& q$ d找到date.timezone这行,去掉前面的分号,改成:
' q- {/ `3 j* R4 _8 A8 O

% z; {% L6 V4 }0 J* G, ?
Java代码  [url=][/url]; D8 A" M: @* f1 K7 ~, r; l

6 U6 p9 G2 L! Z2 C) ?+ O8 N
  • date.timezone = Asia/Shanghai  
! X( a: m6 g- y. [3 f) d8 ~' i
5 T/ o- F  K) {! x' R" r

2、修改 .htaccess文件 ' c7 b. i8 I: F& d  K) q) t* z) v
修改.htaccess文件有两种办法,下面的两条语句只要有一条即可


$ x0 O( X: T! {/ X
Java代码  [url=][/url]2 {4 q# C. z- |( @  X' w$ |% W* r* G. j
& M/ a) e$ t/ M8 B, u; o( o5 c9 o) L5 A
  • php_value date.timezone Asia/Shanghai  
  • SetEnv TZ Asia/Shanghai  

( ]" @3 O/ q0 g0 ?" S5 w

3、修改PHP代码
2 z: U1 T3 t+ c6 S" F4 x9 Z7 J也是下面的两条语句只要其中的一句即可

Php代码  [url=][/url]
4 K% p" F( I/ ]# _" o) }, s9 ^* n6 @8 C8 a: N6 [  S
  • date_default_timezone_set('Asia/Shanghai');  
  • ini_set('date.timezone','Asia/Shanghai');  

3 P. i  e9 P& D1 S/ e: k

例如: <?php date_default_timezone_set('Asia/Shanghai'); ?>


0 L* p( z) v3 @: E+ E" w8 N5 I0 e" m1 p
9 f0 U8 @1 d6 k, d* D" ~
Php代码  [url=][/url]
1 s% u/ u2 x( @4 }7 c
; h# [( g5 O9 g2 p& {3 l5 _
  • <?php  
  • include('tz.php');  
  • echo get_localtime(time(),'Asia/Hong_Kong'); // local time  
  • //get_alltime(time()); // global time  
  • ?>  
9 V! n' ~9 F8 l$ i) {
; n0 {2 v6 e7 p# _

具体见附件;


1 I$ e+ t6 ?. _5 a9 I# P# V
2 \. Z* W( F6 X; R( c. j

例外,也收集了一些有关时区的动动;

2 t1 q6 l2 {) {  x4 K- Z

1. PHP TimeZone Array


8 t, @; H/ X( i0 ~; J' o# ?Php代码  [url=][/url]
$ W3 W% \, D  l) b
% `5 |. l0 ]4 u+ `" {$ D) A
  • <?php  
  • $timezoneTable = array(  
  •     "-12" => "(GMT -12:00) Eniwetok, Kwajalein",  
  •     "-11" => "(GMT -11:00) Midway Island, Samoa",  
  •     "-10" => "(GMT -10:00) Hawaii",  
  •     "-9" => "(GMT -9:00) Alaska",  
  •     "-8" => "(GMT -8:00) Pacific Time (US & Canada)",  
  •     "-7" => "(GMT -7:00) Mountain Time (US & Canada)",  
  •     "-6" => "(GMT -6:00) Central Time (US & Canada), Mexico City",  
  •     "-5" => "(GMT -5:00) Eastern Time (US & Canada), Bogota, Lima",  
  •     "-4" => "(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz",  
  •     "-3.5" => "(GMT -3:30) Newfoundland",  
  •     "-3" => "(GMT -3:00) Brazil, Buenos Aires, Georgetown",  
  •     "-2" => "(GMT -2:00) Mid-Atlantic",  
  •     "-1" => "(GMT -1:00 hour) Azores, Cape Verde Islands",  
  •     "0" => "(GMT) Western Europe Time, London, Lisbon, Casablanca",  
  •     "1" => "(GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris",  
  •     "2" => "(GMT +2:00) Kaliningrad, South Africa",  
  •     "3" => "(GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg",  
  •     "3.5" => "(GMT +3:30) Tehran",  
  •     "4" => "(GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi",  
  •     "4.5" => "(GMT +4:30) Kabul",  
  •     "5" => "(GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent",  
  •     "5.5" => "(GMT +5:30) Bombay, Calcutta, Madras, New Delhi",  
  •     "6" => "(GMT +6:00) Almaty, Dhaka, Colombo",  
  •     "7" => "(GMT +7:00) Bangkok, Hanoi, Jakarta",  
  •     "8" => "(GMT +8:00) Beijing, Perth, Singapore, Hong Kong",  
  •     "9" => "(GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk",  
  •     "9.5" => "(GMT +9:30) Adelaide, Darwin",  
  •     "10" => "(GMT +10:00) Eastern Australia, Guam, Vladivostok",  
  •     "11" => "(GMT +11:00) Magadan, Solomon Islands, New Caledonia",  
  •     "12" => "(GMT +12:00) Auckland, Wellington, Fiji, Kamchatka"  
  • );  
7 I7 }2 ?$ M( l
1 Z$ R  |" G9 q3 r3 E# x
! ]- g, \, }/ t# ~! i1 B
Php代码  [url=][/url]2 |9 n+ @$ D6 V. Q2 C. V! V$ C) C' D
/ r' ?2 ?& j6 p( I0 V" t
  • $timezones = array(  
  •     '-12'=>'Pacific/Kwajalein',  
  •     '-11'=>'Pacific/Samoa',  
  •     '-10'=>'Pacific/Honolulu',  
  •     '-9'=>'America/Juneau',  
  •     '-8'=>'America/Los_Angeles',  
  •     '-7'=>'America/Denver',  
  •     '-6'=>'America/Mexico_City',  
  •     '-5'=>'America/New_York',  
  •     '-4'=>'America/Caracas',  
  •     '-3.5'=>'America/St_Johns',  
  •     '-3'=>'America/Argentina/Buenos_Aires',  
  •     '-2'=>'Atlantic/Azores',// no cities here so just picking an hour ahead  
  •     '-1'=>'Atlantic/Azores',  
  •     '0'=>'Europe/London',  
  •     '1'=>'Europe/Paris',  
  •     '2'=>'Europe/Helsinki',  
  •     '3'=>'Europe/Moscow',  
  •     '3.5'=>'Asia/Tehran',  
  •     '4'=>'Asia/Baku',  
  •     '4.5'=>'Asia/Kabul',  
  •     '5'=>'Asia/Karachi',  
  •     '5.5'=>'Asia/Calcutta',  
  •     '6'=>'Asia/Colombo',  
  •     '7'=>'Asia/Bangkok',  
  •     '8'=>'Asia/Singapore',  
  •     '9'=>'Asia/Tokyo',  
  •     '9.5'=>'Australia/Darwin',  
  •     '10'=>'Pacific/Guam',  
  •     '11'=>'Asia/Magadan',  
  •     '12'=>'Asia/Kamchatka'  
  • );  

: b( H0 W/ ^0 H' }. c1 Y  n! z7 C
Java代码  [url=][/url]
* n  L" M9 L  t$ @5 d- ~
) w. d) ?% c$ o2 ]/ u% t4 d; \
  • $zones = array(  
  •     "Pacific/Midway"                 => "(GMT-11:00) Midway Island, Samoa",  
  •     "America/Adak"                   => "(GMT-10:00) Hawaii-Aleutian",  
  •     "Etc/GMT+10"                     => "(GMT-10:00) Hawaii",  
  •     "Pacific/Marquesas"              => "(GMT-09:30) Marquesas Islands",  
  •     "Pacific/Gambier"                => "(GMT-09:00) Gambier Islands",  
  •     "America/Anchorage"              => "(GMT-09:00) Alaska",  
  •     "America/Ensenada"               => "(GMT-08:00) Tijuana, Baja California",  
  •     "Etc/GMT+8"                      => "(GMT-08:00) Pitcairn Islands",  
  •     "America/Los_Angeles"            => "(GMT-08:00) Pacific Time (US & Canada)",  
  •     "America/Denver"                 => "(GMT-07:00) Mountain Time (US & Canada)",  
  •     "America/Chihuahua"              => "(GMT-07:00) Chihuahua, La Paz, Mazatlan",  
  •     "America/Dawson_Creek"           => "(GMT-07:00) Arizona",  
  •     "America/Belize"                 => "(GMT-06:00) Saskatchewan, Central America",  
  •     "America/Cancun"                 => "(GMT-06:00) Guadalajara, Mexico City, Monterrey",  
  •     "Chile/EasterIsland"             => "(GMT-06:00) Easter Island",  
  •     "America/Chicago"                => "(GMT-06:00) Central Time (US & Canada)",  
  •     "America/New_York"               => "(GMT-05:00) Eastern Time (US & Canada)",  
  •     "America/Havana"                 => "(GMT-05:00) Cuba",  
  •     "America/Bogota"                 => "(GMT-05:00) Bogota, Lima, Quito, Rio Branco",  
  •     "America/Caracas"                => "(GMT-04:30) Caracas",  
  •     "America/Santiago"               => "(GMT-04:00) Santiago",  
  •     "America/La_Paz"                 => "(GMT-04:00) La Paz",  
  •     "Atlantic/Stanley"               => "(GMT-04:00) Faukland Islands",  
  •     "America/Campo_Grande"           => "(GMT-04:00) Brazil",  
  •     "America/Goose_Bay"              => "(GMT-04:00) Atlantic Time (Goose Bay)",  
  •     "America/Glace_Bay"              => "(GMT-04:00) Atlantic Time (Canada)",  
  •     "America/St_Johns"               => "(GMT-03:30) Newfoundland",  
  •     "America/Araguaina"              => "(GMT-03:00) UTC-3",  
  •     "America/Montevideo"             => "(GMT-03:00) Montevideo",  
  •     "America/Miquelon"               => "(GMT-03:00) Miquelon, St. Pierre",  
  •     "America/Godthab"                => "(GMT-03:00) Greenland",  
  •     "America/Argentina/Buenos_Aires" => "(GMT-03:00) Buenos Aires",  
  •     "America/Sao_Paulo"              => "(GMT-03:00) Brasilia",  
  •     "America/Noronha"                => "(GMT-02:00) Mid-Atlantic",  
  •     "Atlantic/Cape_Verde"            => "(GMT-01:00) Cape Verde Is",  
  •     "Atlantic/Azores"                => "(GMT-01:00) Azores",  
  •     "Europe/Belfast"                 => "(GMT) Greenwich Mean Time : Belfast",  
  •     "Europe/Dublin"                  => "(GMT) Greenwich Mean Time : Dublin",  
  •     "Europe/Lisbon"                  => "(GMT) Greenwich Mean Time : Lisbon",  
  •     "Europe/London"                  => "(GMT) Greenwich Mean Time : London",  
  •     "Africa/Abidjan"                 => "(GMT) Monrovia, Reykjavik",  
  •     "Europe/Amsterdam"               => "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna",  
  •     "Europe/Belgrade"                => "(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague",  
  •     "Europe/Brussels"                => "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris",  
  •     "Africa/Algiers"                 => "(GMT+01:00) West Central Africa",  
  •     "Africa/Windhoek"                => "(GMT+01:00) Windhoek",  
  •     "Asia/Beirut"                    => "(GMT+02:00) Beirut",  
  •     "Africa/Cairo"                   => "(GMT+02:00) Cairo",  
  •     "Asia/Gaza"                      => "(GMT+02:00) Gaza",  
  •     "Africa/Blantyre"                => "(GMT+02:00) Harare, Pretoria",  
  •     "Asia/Jerusalem"                 => "(GMT+02:00) Jerusalem",  
  •     "Europe/Minsk"                   => "(GMT+02:00) Minsk",  
  •     "Asia/Damascus"                  => "(GMT+02:00) Syria",  
  •     "Europe/Moscow"                  => "(GMT+03:00) Moscow, St. Petersburg, Volgograd",  
  •     "Africa/Addis_Ababa"             => "(GMT+03:00) Nairobi",  
  •     "Asia/Tehran"                    => "(GMT+03:30) Tehran",  
  •     "Asia/Dubai"                     => "(GMT+04:00) Abu Dhabi, Muscat",  
  •     "Asia/Yerevan"                   => "(GMT+04:00) Yerevan",  
  •     "Asia/Kabul"                     => "(GMT+04:30) Kabul",  
  •     "Asia/Yekaterinburg"             => "(GMT+05:00) Ekaterinburg",  
  •     "Asia/Tashkent"                  => "(GMT+05:00) Tashkent",  
  •     "Asia/Kolkata"                   => "(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi",  
  •     "Asia/Katmandu"                  => "(GMT+05:45) Kathmandu",  
  •     "Asia/Dhaka"                     => "(GMT+06:00) Astana, Dhaka",  
  •     "Asia/Novosibirsk"               => "(GMT+06:00) Novosibirsk",  
  •     "Asia/Rangoon"                   => "(GMT+06:30) Yangon (Rangoon)",  
  •     "Asia/Bangkok"                   => "(GMT+07:00) Bangkok, Hanoi, Jakarta",  
  •     "Asia/Krasnoyarsk"               => "(GMT+07:00) Krasnoyarsk",  
  •     "Asia/Hong_Kong"                 => "(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi",  
  •     "Asia/Irkutsk"                   => "(GMT+08:00) Irkutsk, Ulaan Bataar",  
  •     "Australia/Perth"                => "(GMT+08:00) Perth",  
  •     "Australia/Eucla"                => "(GMT+08:45) Eucla",  
  •     "Asia/Tokyo"                     => "(GMT+09:00) Osaka, Sapporo, Tokyo",  
  •     "Asia/Seoul"                     => "(GMT+09:00) Seoul",  
  •     "Asia/Yakutsk"                   => "(GMT+09:00) Yakutsk",  
  •     "Australia/Adelaide"             => "(GMT+09:30) Adelaide",  
  •     "Australia/Darwin"               => "(GMT+09:30) Darwin",  
  •     "Australia/Brisbane"             => "(GMT+10:00) Brisbane",  
  •     "Australia/Hobart"               => "(GMT+10:00) Hobart",  
  •     "Asia/Vladivostok"               => "(GMT+10:00) Vladivostok",  
  •     "Australia/Lord_Howe"            => "(GMT+10:30) Lord Howe Island",  
  •     "Etc/GMT-11"                     => "(GMT+11:00) Solomon Is, New Caledonia",  
  •     "Asia/Magadan"                   => "(GMT+11:00) Magadan",  
  •     "Pacific/Norfolk"                => "(GMT+11:30) Norfolk Island",  
  •     "Asia/Anadyr"                    => "(GMT+12:00) Anadyr, Kamchatka",  
  •     "Pacific/Auckland"               => "(GMT+12:00) Auckland, Wellington",  
  •     "Etc/GMT-12"                     => "(GMT+12:00) Fiji, Kamchatka, Marshall Is",  
  •     "Pacific/Chatham"                => "(GMT+12:45) Chatham Islands",  
  •     "Pacific/Tongatapu"              => "(GMT+13:00) Nuku'alofa",  
  •     "Pacific/Kiritimati"             => "(GMT+14:00) Kiritimati"  
  • );  
& \  A& p) _" l+ ]8 A( [* u* h
$ P; n, R9 h* b8 ?" V  F5 N7 X
/ G  j& K+ K3 x4 ~! T* F) ^0 S+ ~
% y4 o8 y+ Q' i! {( z. p# y0 B

2. 获取GMT标准时间

' k9 p/ T* J" O! g- H3 ?
Php代码  [url=][/url]
3 b5 C& e3 ?9 Z6 a5 X" n- u
% M$ ^, `) R  R
  • echo 'GMT :'.date("m/d/Y H:i", time() - date("Z"));   

2 k8 Q+ a6 t/ E& [! J
) z" J  P* ]4 E9 I7 W% I/ S! ]
: }+ G  A$ i: k& c% T

3. GMT to local time

4 f1 g9 U" r) I& D+ s8 u6 ]' g

下面的程序结合上面两条,将更加有用。

& A2 q$ _0 a5 Q* l" N- ~
2 f+ [- Z% z, J  J3 X
Java代码  [url=][/url]+ ?& c) R& U7 B
3 S0 f6 q. B2 C5 E' @
  • <?php  
  • // I am using the convention (assumption) of "07/04/2004 14:45"  
  • $processdate = "12/04/2010 14:45"; //  date("m/d/Y H:i", time() - date("Z")) is GMT   
  • // gmttolocal is a function  
  • // i am passing it 2 parameters:  
  • // 1)the date in the above format and  
  • // 2)time difference as a number; -5 in our case (GMT to CDT)   
  • echo gmttolocal($processdate,-5);   
  • function gmttolocal($mydate,$mydifference)   
  • {  
  •     // trying to seperate date and time  
  •     $datetime = explode(" ",$mydate);  
  •     // trying to seperate different elements in a date  
  •     $dateexplode = explode("/",$datetime[0]);  
  •     // trying to seperate different elements in time  
  •     $timeexplode = explode(":",$datetime[1]);  
  •     // getting the unix datetime stamp  
  •     $unixdatetime = mktime($timeexplode[0]+$mydifference,$timeexplode[1],0,$dateexplode[0],$dateexplode[1],$dateexplode[2]);  
  •     // return the local date  
  •     return date("m/d/Y H:i",$unixdatetime);  
  • }  
8 \! ^) X; `5 Z) ?- ?
& F4 h; [4 X$ @# k7 H

/ R4 J: [5 H9 m5 e3 D) ^: [1 I+ o/ u2 z3 ~) w( T9 ~

什么是GMT?


6 w  H+ L# i5 Q  H. ]) y

格林尼治标准时间(GMT)

. [4 K% l. D  `: Y6 f6 z# J5 p% e
由来

   由于地球轨道并非圆形,其运行速度又随着地球与太阳的距离改变而出现变化,因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾 斜度所影响。为着要纠正上述的不均匀性,天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上 的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。

北京时间与GMT时间关系

  GMT是中央时区,北京在东8区,相差8个小时 所以北京时间=GMT时间+八小时   Greenwich mean time 【天】格林尼治标准时间

2 U( z5 V; z- ?6 T7 _2 k
- h/ \. E( z) F  C5 a
+ H" e1 n1 W# i# b0 |# k* f# z
! m" E$ c% P6 H

, N6 {" W) Z/ W+ t5 @* d9 X) ~( F1 j3 S. t) s& I' Q/ X
: Q& Z: c8 O% V6 E( W
参考:http://justcoding.iteye.com/blog/833170
* q. H# @1 u. [4 g) v. j
9 _3 I6 a& Y2 a+ Z. X! u  r' i2 S6 `, ~
6 A5 d5 ^2 q8 S. V+ v& u; l# J4 H" g

拓展小链接

2 N" U# l6 j% |  T

http://geolite.maxmind.com/download/geoip/database/

http://codeigniter.com/forums/viewthread/110099/


( L1 l( ]; }& z' v, b& n" u6 c4 A6 e

另外也可以参看: php获得可靠的精准的当前时间 ( 通过授时服务器 )

美国VPS、域名代购:http://tu8l.taobao.com

返回列表
Namecheap
Namecheap.com - Cheap domain name registration, renewal and transfers - Free SSL Certificates - Web Hosting
互联网安全