关于网页显示夏令时时区问题

关于网页显示夏令时时区问题

近期有接触到美国的一些事情,要求必须支持夏令时。
后来我发现时间显示有三个地方,用的方法都不同找了好久。。。。
搜索时发现没有多少总结,这里我就做一下汇总吧。
现在分享给大家。

一、普通时区切换思路

切换时区可以在页面设置下拉框将24个时区设为不同值。北京上面的时区设为负值,值等于几,偏移量就是几个小时
最后根据北京时间加减一个小时来计算出其他时区时间。

二、夏令时

1、liunx系统调整时区

显然,如果只是通过时区偏移肯定没办法在美国3月份2点调快一个小时,再在11月份调回正常时间。

那么我们该怎么做呢?


linux系统下有个文件目录
/usr/share/zoneinfo这里都是系统写好的时区文件。
文件里有很多内容,这边暂时不讲了,具体内容请自行查阅



系统的真正时间是根据 /etc/localtime来算的。
localtime文件也是个时区文件。
所以看到这里你就知道了。
我们只需要在
/usr/share/zoneinfo找到我们想要调整的地区文件名字
然后替换掉/etc/localtime这个文件就可以了

比如设置成纽约夏令时


指令可以参考
cp -i /usr/share/zoneinfo/America/New_York /etc/localtime





测试
这样如果更改系统时间
首次调整到夏令时切换时间,时间就会偏移
再次调整到之前切换过的时间,就不会改变了。
可以通过重新复制文件,再次测试。
关于现象和测试原理不多说了,想想就知道。

2、php调整输出时间

从网上搜索调整需要更改php.ini文件,如果通过改文件的话,这样很不好动态操作。
幸好php5以上有函数iniset();
可以调整php.ini文件中的内容
调整的参数和linux中路径很像。
例如设置成纽约夏令时


代码如下:
{
int_set(‘date.timezone’,‘America/New_York’);
echo date(‘Y-m-d H:i:s’,time());
}

可以通过判断来进行不同时区设置。


测试方法
同上
最后重置的话,建议调整时间后重新加载php网页。


3、javascript

网页及时显示时间肯定得用AJAX来刷新页面。
我们可以循环调用方法来刷新
<span id=“time”’>时间</span’>

先循环调用

time=date.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)

var date=new Date(time).toLocaleString(“zh-CN”,{timeZone:“America/New_York”})

document.getElementById(‘time’).innerHtml=date;//最后刷新显示

然后就能显示时间了。










最后pis:别看America文件目录下面那么多时区文件,其实美国的城市只有四个。
分别是纽约、芝加哥、丹佛、洛杉矶
对应"America/New_York",“America/Chicago”,“America/Denver”,“America/Los_Angeles”

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值