在php中计算不同时区的实际时间

时间:2010-05-10 10:55:46

标签: php html datetime

我想从不同的时区计算实际时间。 我有两个mysql表

1.时区表: 此表包含两个字段(偏移值,国家/地区名称) 价值是(-12:00,Eniwetok,Kwajalein)(-11:00,Midway Island,Samoa)....等等

2.我的员工表 此表包含具有两个字段名称(created_on,timezone)的员工详细信息,值为(当前时间戳,-11:00)(当前时间戳,-12:00).....等等

现在,如果我的员工登录到我的系统,我想根据表中的时区值显示时间。

基本上如果我的 当前时间戳是:2010-05-10 15:41:39 偏移值为:+5:30

我的结果应该是:2010年5月10日下午3:41

对于相同的当前时间戳的不同偏移值是相同的。我相信我正确地解释了这个问题,如果你想要任何信息,请问我。

3 个答案:

答案 0 :(得分:0)

我相信你所寻找的是date_default_timezone_set()

  

date_default_timezone_set()设置所有日期/时间函数使用的默认时区

答案 1 :(得分:0)

  1. 使用timestamp数据类型存储应用程序中的所有日期
  2. 为每位员工保留时区名称格式的时区。例如:“亚洲/符拉迪沃斯托克”
  3. 在mysql_connect之后识别员工之后 - 发送另一个查询以指定现在使用的时区。这可以使用mysql查询SET time_zone=TZ来完成,其中TZ const是时移,如“+10:00”,或者如果你很幸运,你的mysql服务器已经导入时区集合 - 更正确的方式如下: “Asia / Vladivostok”(SET time_zone="Asia/Vladivostok"
  4. 另外 - 别忘了用ini_set('date.timezone', TZ)或已经提到date_default_timezone_set()
  5. 指定php的时区

答案 2 :(得分:0)

您的数据似乎存在潜在问题。

员工表包含过去事件的固定时区偏移 - 可能是在创建配置文件时 - 但这些不一定用于确定未来事件的偏移量,因为许多位置使用夏令时(DST)。

目前,时区表似乎是多余的,因为您无法对员工进行交叉引用。而且,由于夏令时,抵消将会改变。

您通常会将每个用户的位置存储在数据库中,然后使用date_default_timezone_set()之类的内容来正确显示该位置的时间。