zoukankan      html  css  js  c++  java
  • PHP 时区

    1. 如何设置PHP时区?
    经常存在PHP中date结果和系统时间不一致, (对于我们最常见是慢8小时). 究其原因, 中国处于东八区, 所在系统设置了时区, 但是PHP未设置时区. 那么如何设置PHP时区? 有两种方法:
    1.1 php.ini中
    date.timezone = [Asia/Shang|Asia/Chongqing|Etc/GMT-8|PRC]
    1.2 date_default_timezone_set([Asia/Shang|Asia/Chongqing|Etc/GMT-8|PRC]);

    2. PHP中日期函数和时区
    地理学中以格林尼治时间为标准时间. Internet上使用该时间为通用协调时(UTC, Universal Time Coordinated), 即: GMT(Greenwich Mean Time).
    2.1 time(): 标准时间戳, 指返回自从Unix纪元 (格林威治时间1970-01-01 00:00:00) 到当前GMT标准时间的秒数, 与PHP系统设置的时区无关。
    2.2 date(): 某GMT标准时间本地化"自定义格式"时间, 跟php系统设置的时区有关.
    2.3 gmdate(): 某GMT标准时间的"自定义格式"时间, 跟php系统设置的时区无关.

    3. 假设我在北京, 想获得n天前凌晨的格式化时间. 简化一下, 假设n=0, 当前时间为中午12点. 求今天0点的格式化时间.
    time(): 得到当前GMT标准时间. 伦敦当前时间:(04:00:00).
    time()+3600*8: 8小时后, GMT标准时间. 伦敦8小时后时间戳(12:00:00).
    intval((time()+3600*8)/(3600*24))*(3600*24): GMT标准下, 本地时间的凌晨时间戳. 伦敦当日凌晨(00:00:00)
    intval((time()+3600*8)/(3600*24))*(3600*24)-3600*8: GMT标准, 本地时间凌晨时间戳. 伦敦前一日(16:00:00)北京(00:00:00)
    date('Y-m-d H:i:s', intval((time()+3600*8)/(3600*24))*(3600*24)-3600*8): 根据本地时区, GMT(16:00:00)PRC(00:00:00)
    intval((time()+28800)/$g)*$g-28800转换为格式化日期. 即: today算法.
    求n天前的凌晨时间:
    date('Y-m-d H:i:s', intval((time()+3600*8-3600*24*n)/(3600*24))*(3600*24)-3600*8);
    date('Y-m-d H:i:s', strtotime('today')-3600*24*n);

    参考:
    http://www.cnblogs.com/xmphoenix/archive/2011/06/30/2095022.html

  • 相关阅读:
    微服务架构
    微服务架构
    Java语言编程
    Java语言编程
    Java语言编程
    《自己动手写云盘》 – 确立需求
    树上差分
    线性基
    BM(Berlekamp-Massey)算法
    FFT/FWT
  • 原文地址:https://www.cnblogs.com/codesay/p/3580712.html
Copyright © 2011-2022 走看看