PHP中的时间函数有这么些:(1)date用法: date(格式,[时间]);如果没有时间参数,则使用当前时间. 格式是一个字符串,其中以下字符有特殊意义:U 替换成从一个起始时间(好象是1970年1月1日)以来的秒数
Y 替换成4位的年号.y 替换成2位的年号.F 替换成月份的英文全称.M 替换成月份的英文简称.m 替换成月份数.z 替换成从当年1月1日以来的天数.d 替换成日数.l 替换成星期几的英文全称.D 替换成星期几的英文简称.w 替换成星期几(数字).H 替换成小时数(24小时制).h 替换成小时数(12小时制).i 替换成分钟数.s 替换成秒数.A 替换成"AM"或"PM".a 替换成"am"或"pm".S 替换成序数字后缀,例如:"st","nd","rd","th".
函数返回作过了替换的格式串. (2)getdate(时间)返回一个哈希表,各下标是:"seconds" -- 秒数"minutes" -- 分数"hours" -- 小时数"mday" -- 日数"mon" -- 月份数"year" -- 年号"yday" -- 1月1日以来的天数"weekday" -- 星期几,英文全称"month" -- 月份,英文全名(3)gmdate与date类似,但先将时间转换成格林威治标准时.(4)mktime用法:mktime(小时数,分数,秒数,月,日,年); 返回一个时间值,可用于其他函数.(5)time()用法:time(); 返回1970年1月1日零点以来的秒数.(6)microtime()用法:microtime(); 返回一个字符串,用空格分成两部分,后一部分相当于time()的返回值,前一部分是微秒数.(7)checkdatecheckdate(月,日,年); 返回逻辑真或逻辑假. 如果:年在1900和32767之间(包括1900与32767);月在1到12之间;日在该月的允许日数范围内(考虑了闰年);
则返回逻辑真.(8)set_time_limit用法:set_time_limit(秒数);规定从该句运行时起程序必须在指定秒数内运行结束, 超时则程序出错退出.
1· by:PHP中所有函数都是UNIX纪元的,即从1970年1月1日开始的。日期是从这个时候开始的秒数。当一个函数调用从这时候计的秒数时,就把它当作(timestamp)时间戳。
本地时间函数1.string date(string format,inieger timestamp)
该函数返回一个表示时间的字符串,是由string format 控制的。如:
<?
PRint(date("Y年 m月d日");//输出当前,年月日.
print(date("Y年 m月d日",60*60*24*365*10);//输出1980年1月1日.
?>
也许你会问,怎麽没有timestamp呢?若timestamp为空时,或不写时,表示使用当前时间一刻timestamp.
表示年份的控制符: Y---四位的年份 y---两位的年份
表示月份的控制符: m---从1-12的月份 F---英文月份名 M---简写的月份名
表示日号的控制符: d---前面有0的月份中日期 j--前面没有0的日号
表示星期的控制符: l--英文星期 D--简写的星期
表示小时的控制符: h--从1到12小时 H---从0到23的小时
表示上下午的控制符 a ---am或pm A---AM或PM
表示分钟的控制符: i---取值00-59
另外的 z--一年中的日期
2. array getdate(integer timestamp)
该函数返回一个矩阵.
如:
<?
$current_date=getdate();
print($current_date("hours"));
print($current_date("minutes");
print($current_date("seconds");
?>
说明:
元素 描述
hours 24小时格式的小时
mday 月份中日期
minutes 分钟
mon 数字形式的月份
month 月份全称
seconds 秒数
wday 从0到6的数字形式的星期几
weekday 星期几的名称
year 年份
0 时间戳即从1970年1月1日到现在的秒数
yday 一年中数字形式的日期
3. boolean checkdate(integer month,integer day,integer year)
该函数检查日期是否合法.如:
<?
if(checkdate(2,29,1980))
print("日期合法!n");
?>
4. integer time()
该函数获得当前时间戳.如:
<?
print(time());//输出一大串整数
?>
5. integer mktime(integer hour,integer minutes,integer seconds,integer month, integer day,integer year)
该函数返回给出日期的时间戳,即从1970年1月1日到现在的秒数.
如某参数超出范围,该函数也可以解释它,如13月即为第二年的一月.
如:
<?
$currenthour=date("H");
print("50个小时后为:");
print(date("h:i A l F dS,Y",mktime($currenthour+50)));
print("<br>n");
?>
6. string microtime()
该函数返回一个字符串,由当前时间的毫秒数+空格+从1970年开始的秒数
<?
print("start:microtime()<br>n");
for($index=0;$index<1000;$index++)
print("good!");
print("stop:microtime()<br>n");
?>
还有,各林威治标准时间函数,不常用我就不说了!常用的就这些。
--------------------------------------------------------------------------------2· by:楼主
一个问题举例$nowdate="1999-08-05" ;
$aa=getdate($nowdate);
$year=$aa['year'];
$month=$aa['mon'];
echo $year."</br>";
echo $month;
为何得到:
1970
1
我希望得到:
1999
8
如何解决?--------------------------------------------------------------------------------$nowdate="1999-08-05" ;
$aa=strtotime($nowdate);
$year=date("Y",$aa);
$month=date("n",$aa);
echo $year."</br>";
echo $month;
--------------------------------------------------------------------------------3· by:
1,年-月-日
echo date('Y-m-j');
2007-02-6echo date('y-n-j');
07-2-6
大写Y表示年四位数字,而小写y表示年的两位数字;
小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-m-d');
2007-02-06
大写M表示月份的3个缩写字符,而小写m则表示月份的数字(带前导0);
没有大写的J,只有小写j表示月份的日期,无前导o;若需要月份带前导则使用小写d。
echo date('Y-M-j');
2007-Feb-6
echo date('Y-F-jS');
2007-February-6th
大写M表示月份的3个缩写字符,而大写F表示月份的英文全写。(没有小写f)
大写S表示日期的后缀,比如“st”、“nd”、“rd”和“th”,具体看日期数字为何。
小结:
表示年可以用大写的Y和小写y;
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);
表示日可以用小写d和小写j,大写S表示日期的后缀。
2,时:分:秒
默认情况下,PHP解释显示的时间为“格林威治标准时间”,与我们本地的时间相差8个小时。
echo date('g:i:s a');
5:56:57 am
echo date('h:i:s A');
05:56:57 AM
小写g表示12小时制,无前导0,而小写h则表示有前导0的12小时制。
当使用12小时制时需要表明上下午,小写a表示小写的“am”和“pm”,大写A表示大写的“AM”和“PM”。
echo date('G:i:s');
14:02:26
大写G表示24小时制的小时数,但是不带前导的;使用大写的H表示带前导的24小时制小时数
小结:
字母g表示小时不带前导,字母h表示小时带前导;
小写g、h表示12小时制,大写G、H表示24小时制。
3,闰年、星期、天
echo date('L');
今年是否闰年:0
echo date('l');
今天是:Tuesday
echo date('D');
今天是:Tue
大写L表示判断今年是否闰年,布尔值,为真返回1,否则为0;
小写l表示当天是星期几的英文全写(Tuesday);
而使用大写D表示星期几的3个字符缩写(Tue)。
echo date('w');今天星期:2
echo date('W');
本周是全年中的第 06 周
小写w表示星期几,数字形式表示
大写W表示一年中的星期数
echo date('t');
本月是 28 天
echo date('z');
今天是今年的第 36 天
小写t表示当前月份又多少天
小写z表示今天是本年中第几天
4,其他
echo date('T');
UTC
大写T表示服务器的时间区域设置
echo date('I');
0
大写I表示判断当前是否为夏令时,为真返回1,否则为0
echo date('U');
1170769424
大写U表示从1970年1月1日到现在的总秒数,就是Unix时间纪元的UNIX时间戳。
echo date('c');
2007-02-06T14:24:43+00:00
小写c表示ISO8601日期,日期格式为YYYY-MM-DD,用字母T来间隔日期和时间,时间格式为HH:MM:SS,时区使用格林威治标准时间(GMT)的偏差来表示。
echo date('r');
Tue, 06 Feb 2007 14:25:52 +0000
小写r表示RFC822日期。
--------------------------------------------------------------------------------4· by:
php中计算时间差有时候是件很麻烦的事!
不过我相信任何语言,只要撑握了其中规率就能找到办法,绝对是化腐朽为神奇的。
工作中经常要进行日期计算,下面总结几个工作中总结出的经验。先记下免得日后会忘!
1。第一种 计算时间段差(可以是分,秒,天)
$endtime="2004-09-09 18:10:00";
$d1=substr($endtime,17,2); //秒
$d2=substr($endtime,14,2); //分
$d3=substr($endtime,11,2); // 时
$d4=substr($endtime,8,2); //日
$d5=substr($endtime,5,2); //月
$d6=substr($endtime,0,4); //年
echo $d1.'-'.$d2.'-'.$d3.'-'.$d5.'-'.$d4.'-'.$d6."n";
echo date("Y-m-d H:i:s")."n";
$now_T=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
echo $now_T."n";
$now_S=mktime("$d3","$d2","$d1","$d5","$d4","$d6");
echo $now_S."n";
$end_TS=($now_S-$now_T)/60;//计算 剩余分钟
echo $end_TS;
?>
注 $startdate=mktime("0","0","0","1","1","2000");
//所得到的值为从1970-1-1到参数时间的总秒数 那么 化为分 /60时 /3600天/3600/24 即可!若mktime()中的参数缺省,那表示使用当前日期。
2. 如果有数据库就很容易了!若是MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可!
若是MySQL那就用两个日期字段的差值计算的计算结果保存在另一个数值型字段中!用时调用便可!
--------------------------------------------------------------------------------5· by:楼主
下列收集日期计算的方法:
某个日期加几天:
$tdate=date("Y-m-d");
$a=date( "Y-m-d", mktime(0,0,0,date("m"),date("d")+3,date("Y")));
$sql="select * from memo where username='$session_user_id'
and compid=$compid and telldate>='$tdate' and telldate<='$a'
order by id desc";
$ret=mysql_query($sql,$conn);
$a就是今天+三天的时间!
$b=date( "Y-m-d", mktime(0,0,0,date("m"),date("d")-3,date("Y")));
$b就是今天-三天的时间!
////
某个日期加n天后的日期
$days=abs((strtotime(date("Y-m-d"))-strtotime("xxxx-xx-xx"))/86400);
/////
<?PHP$Date_1="2003-7-15";//也可以是:$Date_1="2003-7-15 23:29:14";$Date_2="1982-10-1";$d1=strtotime($Date_1);$d2=strtotime($Date_2);$Days=round(($d1-$d2)/3600/24);Echo"偶已经奋斗了 $Days 天^_^";?>
--------------------------------------------------------------------------------6·php中计算时间差的几种方法 by:楼主
一个简单的例子就是计算借书的天数,这需要php根据每天的