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

  • 相关阅读:
    浅析C#中的套接字编程
    在 C# 中通过 P/Invoke 调用Win32 DLL
    读书笔记c#高级编程 委托和事件
    如何将 .net framework 打包进 msi安装包,使得安装时自动安装
    自实现input上传指定文件到服务器
    Thrift初探:简单实现C#通讯服务程序
    C# 使用NLog记录日志
    C# winform程序怎么打包成安装项目(图解)
    VUE3.0+Vant VS Code入门教程
    WCF入门教程2——创建第一个WCF程序
  • 原文地址:https://www.cnblogs.com/codesay/p/3580712.html
Copyright © 2011-2022 走看看