• 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

  • 相关阅读:
    内置函数拾遗
    jQuery与其他JS库冲突解决
    ckeditor+ckfinder添加水印。
    PostgreSQL与mysql的比较
    php函数 之 iconv 不是php的默认函数,也是默认安装的模块。需要安装才能用的。
    php mb_substr()函数的详细解释!
    成为一名PHP专家其实并不难
    php中级程序员的进化标准
    鼠标经过图片切换效果。
    计算两个日期之间的工作日
  • 原文地址:https://www.cnblogs.com/codesay/p/3580712.html
Copyright © 2020-2023  润新知