快速业务通道

PHP的日期时间运算总结

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-23

<?php
//GB2312的Encode
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

/*重点了解strtotime()函数
1、strftime比time()好用,可以直接把常用的’2010-02-03‘转成时间戳。
2、date()可以显示1970年前的时间。而不必用负数做参数2
3、日期计算可以用时间戳来中转。计算两个日期相差的天数,可以取得相差的时间戳后除以“24小时*60分*60”秒来得到,但用strtotime()更简洁、
4、了解用PEAR创建日历。这里略去。
知识点:网络上有关于date(''Y-m-d'',-800)来计算1970年前的时间,但WINDOW系统不支持负值,因此总会返回1970-1-1子夜。
*/

#PHP5必须先设置默认区。
date_default_timezone_set(''ETC/GMT-8'');
$nowdate=''2010-02-23'';
$lassdate = ''2010-02-22'';

echo ''strftime()函数输出的''.strftime(''%Y-%m-%d %H:%M:%S'',time()).''<br />'';
echo ''date()函数输出的''.date(''Y-m-d H:i:s'',time()).''<br />'';
//检查日期:boolean checkdate(int month,int day,int year)
$d=''2010-2-31'';
echo $d.''是''.(checkdate(2,31,2010)?''有效日期!'':''无效日期!'').''<br />'';


//确定当月天数
echo ''本月有''.date(''t'',time()).''天<br />''; //28天
//确定任意给定的月份的天数
$d=''2008-02-01''; //闰年,或$d=''2008-02'';不需要输入天也可以
$d=strtotime($d);
echo ''2008年2月有''.date(''t'',$d).''天<br />''; //29天

$d=getdate();
echo ''<pre>'';
print_r($d);
echo ''</pre>'';
/*Array(
    [seconds] => 42
    [minutes] => 16
    [hours] => 13
    [mday] => 23
    [wday] => 2
    [mon] => 2
    [year] => 2010
    [yday] => 53
    [weekday] => Tuesday
    [month] => February
    [0] => 1266902202
)
*/

//echo date("Y-m-d H:i:s",-8000);
//setlocale(LC_ALL,''zh_CN.gb2312''); //setlocale函数对下面的没有影响。
#测试strftime,mktime函数。
echo strftime(''今天是:%Y-%m-%d %H:%M:%S'').''<br />'';
echo strtotime(''now'').''<br />''; // 等于time(),但strtotime使用范围更灵活,参下文.
echo ''测试还原昨天时间:''.date(''Y-m-d'',strtotime($lassdate)).''<br />''; //可以把字串型日期转成时间戳再用date转回原格式。
$x=strtotime($lassdate);
$y=mktime(0,0,0,''2'',''22'',''2010'');
echo ''strtotime()得到的昨天的时间戳是:''.$x.'',mktime()得到的昨天时间戳是:''.$y.(($x==$y)?'',二者相等'':'',二者不相同'').''<br />''; //相等。

#显示1970年前的日期
$time_int=strtotime(''1929-2-10'');
echo date("Y-m-d ",$time_int).''<br />''; //在MYSQL中与date()函数相同功能的是date_format(''1996-02-05 11:07:45'',''%Y-%m-%d'')或for_format()

/*时间运算:
*请使用方法三。其它方法只供参考。 *
*/
#1、今天是23号,获得前天的时间,即减两天。
$predate=2;
$pretime=$predate*24*60*60; //2天的时间戳。
echo date(''前天是:Y-m-d'',time()-$pretime).''<br />'';    //前天是:2010-02-21

#2、两个日期相差的天数。
$olddate = ''2010-02-11''; //如果要用mktime函数,则要用expl

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号