程序中时区的问题

    time()函数返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。但是你会发现返回的秒数少了8个小时,这是因为系统的默认时区是东八区,格林威治时间 1970 年 1 月 1 日 00:00:00对应的是北京时间 1970 年 1 月 1 日 08:00:00,这样就造成time()函数返回的秒数会少了8个小时。如果只是单纯的秒数和字符串时间之间转换,这点可以忽略,因为你在用系统函数转换的时候,系统函数会按当前系统的默认时区去处理。


    现在需要判断当前时间的小时级别是否是在另外两个时间的小时级别之间

    开始时间:2018 年 6 月 7 日 07:00:00

    结束时间:2018 年 6 月 9 日 09:00:00

    当前时间:2018 年 6 月 8 日 08:00:00

    需要判断8点整是否在7点整和9点整之间,但是只有上面三个时间的秒数值,需要时间秒数对(24*60*60)求余,得到余数是小时时间的秒数,但是得到的开始时间的余数为(23*60*60),结束时间的余数为(1*60*60),当前时间的余数为(0*60*60),这样的到的结论就是8点整不在7点整和9点整之间,这肯定是不科学的,这就是系统时区造成的结果。将时间值加上(8*60*60)再对(24*60*60)求余,得到的开始时间的余数为(7*60*60),结束时间的余数为(9*60*60),当前时间的余数为(8*60*60),这样就正确了,这是把缺少的8个小时补足了。PHP中date('Z')表示系统时区时差偏移量的秒数值。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值