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,15 Mar 2005 15:23:52或2008-01-01此类的字符串,strtotime还可以“理解”一定的英语。 如下面的代码:
/**
* PHP时间函数使用技巧
*
* @param
* @arrange 512-笔记网: www.jb51.cc
**/
<?PHP
date_default_timezone_set("PRC");
$mydatestring = array('now','today','tomorrow','yesterday','thursday','this thursday','last thursday','+2 hours','-1 month','30 seconds','next week','last year','2 weeks ago');
foreach($mydatestring as $item)
{
echo "$item:".date('r',strtotime($item)).'<br />';
}
?>
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
输出:now:Sat,28 Feb 2009 11:03:35 +0800 today:Sat,28 Feb 2009 00:00:00 +0800 tomorrow:Sun,01 Mar 2009 00:00:00 +0800 yesterday:Fri,27 Feb 2009 00:00:00 +0800 thursday:Thu,05 Mar 2009 00:00:00 +0800 this thursday:Thu,05 Mar 2009 00:00:00 +0800 last thursday:Thu,26 Feb 2009 00:00:00 +0800 +2 hours:Sat,28 Feb 2009 13:03:35 +0800 -1 month:Wed,28 Jan 2009 11:03:35 +0800 30 seconds:Sat,28 Feb 2009 11:04:05 +0800 next week:Sat,07 Mar 2009 11:03:35 +0800 last year:Thu,28 Feb 2008 11:03:35 +0800 2 weeks ago:Sat,14 Feb 2009 11:03:35 +0800 再如我要查找下个月的第一个星期五:
/**
* PHP时间函数使用技巧
*
* @param
* @arrange 512-笔记网: www.jb51.cc
**/
$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 'the first Fri of next month is :'.date('Y-m-d',$first_fri);
/*** 来自编程之家 jb51.cc(jb51.cc) ***/
输出: Today:2009-02-28 the first Fri of next month is :2009-03-06