总结了php时间处理问题

问题就是通过一个时间处理

echo date('Ymd', strtotime('+1 month', strtotime('20150130')) );

按照朋友的想法,应该输出的是20150227 ,而实际输出的是20150302
也就是说1月的29,30,31号输出都是3月份的天数,并不是想要得到的2月的天数。
按照我的理解是,当月+1个月的天数即是相加当月的天数,这个想法也得到验证。

echo date('Ymd', strtotime('+1 month', strtotime('20150331')) );

想得到20150430 结果得到的是20150501
所以按照这样的写法在统计的时候会出现错误。当然我没看过他写的程序,
也不明白为何是在月底加一个月。
我给他的解决方案是,每个月都重新开始计算。这样就不会出错
最后他给的终极解决法案是

echo date('Ym', strtotime('first day of next month', strtotime('20150130')) );

证实跟我的想法是一样的。

他这个死脑筋一定要证明是php不完善,还特地去找ruby的解决方案。
按照她的要求我贴出他找的ruby的代码

Date.new(2015,1,30) +

ruby的最后结果就是希望得到的2月27号

PHP时间差8小时的问题问题原因所在

从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的
也就是显示的时间(无论用什么php命令)都是格林威治标准时间
和我们的时间(北京时间)差了正好8个小时。

有以下3中方法可以恢复正常的时间。

1、最简单的方法就是不要用php5.1以上的版本
2、如果一定要用,而且不能修改php.ini,则需要在关于时间的初始化的语句的
上面加上 date_default_timezone_set (‘XXX’);

3、一劳永逸,仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号
date.timezone = PRC,重启http服务(如apache2或iis等)即可
【相关注解:】↓
关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore
老外好像把北京漏调了

其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC
PRC是什么?PRC是中华人民共和国啊-_-
你可以到http://www.php.net/docs.php上查到更多的地区
由于程序最后还是会把地名转为时区来计算,所以当你使用的不是内置的区域的时候,程序将自动使用格林威治标准时间。

请注意

如果没有修改php.ini的权限,那么应该在调用date()方法之前加上date_default_timezone_set(‘PRC’);
参数要加上双引号或单引号

时间: 2025-01-21 03:24:29

总结了php时间处理问题的相关文章

php获得文件大小和文件创建时间的方法

 这篇文章主要介绍了php获得文件大小和文件创建时间的方法,涉及php中filesize及fileatime函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php获得文件大小和文件创建时间的方法.分享给大家供大家参考.具体分析如下: php中可以显示文件的各种属性,这些属性包括文件的最后访问时间.最后修改时间.文件大小等. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <HTML>

关于DJANGO和JAVASCRIPT的时间

最近,实际一些简单统计时,要到库里去检索数据出来用HIGHCHARTS画图, 作一个简单的回照..   DJANGO用TEMPLATEVIEW来作.专业,正规:) class SAView(TemplateView): template_name = 'version/sa_site.html' paginate_by = 10 def get_context_data(self, **kwargs): context = super(SAView, self).get_context_data

J2ME中的时间处理全攻略

攻略 时间处理在程序开发中相当常见,下面对于时间处理做一个简单的说明. 一.时间的表达方式时间在J2ME中有两种表达方式:1. 以和GMT1970年1月1号午夜12点和现在相差的毫秒数来代表这种方式适合比较两个时间之间的差值.2.  以对象的形式来表达二.时间处理的相关类时间处理在J2ME中涉及三个类:1.  System类long time = System. currentTimeMillis();使用该方法可以获得当前时间,时间的表达方式为上面提到的第一种. 2.  Date类Date d

Linux时间函数之gettimeofday()函数之使用方法

一.gettimeofday()函数的使用方法: 1.简介: 在C语言中可以使用函数gettimeofday()函数来得到时间.它的精度可以达到微妙 2.函数原型: #include<sys/time.h> int gettimeofday(struct  timeval*tv,struct  timezone *tz ) 3.说明: gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中 4.结构体: 1>timeval struct  ti

在MYSQL中插入当前时间,就象SQLSERVER的GETDATE()一样。(见内)

mysql|server|sqlserver|插入 NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中.CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中.CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中.例:insert into tablename (fieldname) values (now()) 

空间|时间|对象 圈人 + 目标人群透视 - 暨PostgreSQL 10与Greenplum的对比和选择

标签 PostgreSQL , PostGIS , geohash , brin , gist索引 , Greenplum , HybridDB for PostgreSQL 背景 通常一个人的常驻地可能会包括:家.儿女家.双方父母家.情人.异性伴侣家.公司.商圈若干等. 通过对这些数据的运营,可以实现很多业务需求.例如: 1.寻人 <海量用户实时定位和圈人 - 团圆社会公益系统(位置寻人\圈人)> 2.线下广告投放人群圈选,选址,商圈人群画像. <数据寻龙点穴(空间聚集分析) - 阿里

Shell 调用系统时间变量

获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterday +%Y%m%d` 获取前天日期:`date -d -2day +%Y%m%d` 依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d` 或n天前的 `date -d "n days ago" +%y%m%d` 明天:`date -d tomorrow +%y%m%d` 注意以上中间有空格 时间域 % H

巧用WPS格式刷节省排版时间

  在编辑完文字后,常常要对文字大小,颜色,以及文章的排版进行修改,如果一处文字的字体正好与多处文字的设置一样,那么就可以用格式刷的功能来进行操作,不需要一个一个重复操作. 操作步骤: 1.启动WPS文字,随便打开一篇文档,以便演示.可以看到三国杀游戏规则几个字是宋体小二格式的. 启动文字 2.选中这些字,点击菜单栏上的格式刷按钮. 格式刷 3.此时,鼠标变成刷子的样子,左键按住不放,选择要进行修改格式的文字. 4.完成,刚才被我们选中的部分格式也变成了宋体小二,但是发现没有,格式刷只能用一次,

[经典面试题]在O(1)时间删除链表结点

[题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {     int        value;     struct ListNode*  next; }; 函数的声明如下: void DeleteNode(ListNode* head,ListNode* node); [思路] 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解. 在链表中

360开机时间显示小助手怎么关闭?

  方法/步骤: 1.首先,我们启动并运行360安全卫士这个软件,然后我们选择"优化加速"这个功能选项. 2.然后我们能看到一个"一键优化"的功能选项, 我们需要注意软件的右下方界面中有一个"开机时间小助手设置". 3.然后我们点击这个设置,在设置里面将开机时间的显示设置勾除,这样软件在开机时就不会显示开机时间了.你也可以将部分显示天气之类的设置全部勾除,这样便可以彻底的关闭360开机时间小助手. 4.在关闭这个开机时间小助手之前,我们可以先查看