PHP中的日期时间基本上基于UNIX时间戳来处理的
。 比如date/getdate()/mktime()/strftime()/strtotime/time等都与时间戳有着密切的关联
。 这些函数的用法可查阅相关文档
,这里就不对这些函数作解释了。
要将时间戳转为可读的形式
,就需要date函数出马了,他需要二个参数:格式化字符串与时间戳。
比较难记的是格式化字符,不过常用的也就是YymdwHis,其它的亦可参阅文档。
将可读的日期转为时间戳通常用以下二个函数:
mktime
如:
$timestam=mktime(18,30,00,8,10,1981);
将得到1981年8月10日下午6点30整的时间戳。
另一个比较NB的是strtotime,看名字就是将字符串转为一个时间戳。
它的NB之处不在于解析如:Tue,15Mar200515:23:52或2008-01-01此类的字符串,strtotime还可以“理解”一定的英语。
如下面的代码:
<?php
date_default_timezone_set("PRC");
$mydatestring=array('now','today','tomorrow','yesterday','thursday','thisthursday','lastthursday','+2hours','-1month','30seconds','nextweek','lastyear','2weeksago');
foreach($mydatestringas$item)
{
echo"$item:".date('r',strtotime($item)).'<br/>';
}
?>
输出:
now:Sat,28Feb200911:03:35+0800
today:Sat,28Feb200900:00:00+0800
tomorrow:Sun,01Mar200900:00:00+0800
yesterday:Fri,27Feb200900:00:00+0800
thursday:Thu,05Mar200900:00:00+0800
thisthursday:Thu,05Mar200900:00:00+0800
lastthursday:Thu,26Feb200900:00:00+0800
+2hours:Sat,28Feb200913:03:35+0800
-1month:Wed,28Jan200911:03:35+0800
30seconds:Sat,28Feb200911:04:05+0800
nextweek:Sat,07Mar200911:03:35+0800
lastyear:Thu,28Feb200811:03:35+0800
2weeksago:Sat,14Feb200911:03:35+0800
再如我要查找下个月的第一个星期五:
$nextmonth=date('Y-'.(date('n')+1).'-0');
$nextmonth_timest=strtotime($nextmonth);
$first_fri=strtotime('Fri',$nextmonth_timest);
echo"Today:".date('Y-m-d');
echo'<br/>';
echo'thefirstFriofnextmonthis:'.date('Y-m-d',$first_fri);
输出:
Today:2009-02-28
thefirstFriofnextmonthis:2009-03-06
还有太多太多,以后有时间再写。