php中对时间日期的处理时相对简单的,php中提供了date/time 函数允许您提取并格式化服务器上的日期和时间。
date/time函数的行为受到 php.ini 中设置的影响。当然我们可以手动更改其中的配置项参数,不过最好不要更改。
php 为我们提供了不少函数来操控时间,虽然多 但用的不多。
<?php /* * Created on 2010-8-20 * * @author wangyalei * */ //1.date() 函数格式化一个本地时间/日期 //format 必需。规定如何返回结果。 timestamp 可选。规定时间戳。默认是当前的日期和时间。 //date(format,timestamp) // d - 月中的天 (01-31) // m - 当前月,以数字计 (01-12) // Y - 当前的年(四位数) echo date("Y/m/d"); echo "<br />"; echo date("Y.m.d"); echo "<br />"; echo date("Y-m-d"); //输出 //2010/08/20 //2010.08.20 //2010-08-20 //设置时区 date_default_timezone_set("Asia/Shanghai"); $now = getdate(); print "{$now['hours']}:{$now['minutes']}:{$now['seconds']}\t";//22:13:57 $now = localtime(); print "$now[2]:$now[1]:$now[0]";// 22:14:1 //2。mktime() 函数返回一个日期的 Unix 时间戳。 //语法 mktime(hour,minute,second,month,day,year,is_dst) //参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。 $then = mktime(23,31,22,8,21,2010); echo $then;//1282433482 这个就是当前的时间戳 echo "<br>"; //把时间戳 转换为正常时间格式 echo "day is ".date("Y/m/d", $then);//day is 2010/08/21 echo "<br>"; //获取明天的日期 $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "Tomorrow is ".date("Y/m/d", $tomorrow); //和mktime 一般差不多 echo gmmktime(23,31,22,8,21,2010);//221282433482 //4 strftime() 函数根据区域设置格式化本地时间/日期。 //strftime(format,timestamp) format 可选。规定如何返回结果。timestamp 可选。 $then = mktime(23,31,22,8,21,2010); print strftime("%c",$then);//08/21/10 23:31:22 $then = gmmktime(23,31,22,8,21,2010); echo "<br>"; print strftime("%c",$then);//08/21/10 23:31:22 // strftime 和 date 相比 更容易生成内部带有插值的时间和日期值的字符串 date_default_timezone_set("Asia/Shanghai"); print strftime(" 现在时间 %I, %P %B %d,%Y");//现在时间 10, August 22,2010 print "现在时间".date('h a ').date('F d,y');//现在时间10 am August 22,10 //5计算两个时间差 $now_1 = mktime(0,0,0,8,21,2010); $now_2 = mktime(0,0,0,8,22,2010); $diff_seconds = $now_2-$now_1; //相差 的月 $diff_week = floor($diff_seconds/604800);//60*60*24*7 //相差的天 $diff_day = floor($diff_seconds/86400);//60*60*24 echo "相差 时间为".$diff_week."个月".$diff_day."天";//相差 时间为0个月1天 //6验证日期 //checkdate($month,$day,$year);// return true or false echo checkdate(2,30,2005) ? "valid" : "invalid"; //看一个例子 function pc_checkdate($month,$day,$year){ $min_age = 18; $max_age = 250; if(!checkdate($month,$day,$year)){ return false; } list($this_year,$this_month,$this_day) = explode(",",date("Y,m,d")); $min_year = $this_year - $max_age; $max_year = $this_year - $min_age; if(($year>=$min_year)&&($year<=$max_year)){ return true; }else{ return false; } } if(pc_checkdate(12,3,2001)){ print "0k"; }else{ print "no"; } //7 从字符串中解析时间 //strtotime() 函数将任何英文文本的日期时间描述解析为 Unix 时间戳。 //strtotime(time,now) //time 规定要解析的时间字符串。 //now 用来计算返回值的时间戳。如果省略该参数,则使用当前时间。 //成功则返回时间戳,否则返回 FALSE。在 PHP 5.1.0 之前本函数在失败时返回 -1。 echo(strtotime("now")); echo "<br>"; echo(strtotime("3 October 2005")); echo "<br>"; echo(strtotime("+5 hours")); echo "<br>"; echo(strtotime("+1 week")); echo "<br>"; echo(strtotime("+1 week 3 days 7 hours 5 seconds")); echo "<br>"; echo(strtotime("next Monday")); echo "<br>"; echo(strtotime("last Sunday")); //8 使用正侧表达式 解析时间 //如果要从字符串中解析时间 你不知道其格式 就不能使用 strtotime $date = '2008-12-2 12:30:21'; preg_match('/(\d{4})-(\d{2})-(\d{2})(\d{2}):(\d{2}):(\d{2})/',$date,$datearry); //分割时间 $date_arry=preg_split("/[-:]/",$date); var_dump($date_arry); //array(5) { // [0]=> // string(4) "2008" // [1]=> // string(2) "12" // [2]=> // string(4) "2 12" // [3]=> // string(2) "30" // [4]=> // string(2) "21" //} ?>
date -- 格式化一个本地时间/日期 的 format 字符 在手册中讲解的非常详细了在这就不多废话了
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>else if语句的应用</title> </head> <body> <?php $moth = date("n"); //设置月份变量$moth $today = date("j"); //设置日期变量$today if ($today >= 1 and $today <= 10){ //判断日期变量是否在1-10之间 echo "今天是".$moth."月".$today."日上旬"; //如果是,说明是上旬 }elseif($today > 10 and $today <= 20){ //否则判断日期变量是否在11-20之间 echo "今天是".$moth."月".$today."日中旬"; //如果是,说明是中旬 }else{ //如果上面两个判断都不符合要求,则输出默认值 echo "今天是".$moth."月".$today."日下旬"; //说明是本月的下旬 } ?> </body> </html>
现在说一下setlocal定义和用法setlocale() 函数设置地区信息(地域信息)。
地区信息是针对一个地理区域的语言、货币、时间以及其他信息。
该函数返回当前的地区设置,若失败则返回 false。
语法
setlocale(constant,location) constant 必需。规定应该设置什么地区信息。 可用的常量: LC_ALL - 包括下面的所有选项 LC_COLLATE -排序次序 LC_CTYPE - 字符类别及转换(例如所有字符大写或小写) LC_MESSAGES - 系统消息格式 LC_MONETARY - 货币格式 LC_NUMERIC - 数字格式 LC_TIME - 日期/时间格式 location 必需。规定把地区信息设置为什么国家/地区。如果 location 参数是数组,setlocale() 会尝试每个数组元素,直到找到合法的语言或地区代码为止。如果某个地区在不同的系统上拥有不同的名称,这一点很有用。
提示和注释
注释:setlocale() 函数仅针对当前脚本改变地区信息。
提示:可以通过 setlocale(LC_ALL,NULL) 把地区信息设置为系统默认。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>switch多重判断语句</title> </head> <body> <?php setlocale(LC_TIME,null); //设置本地环境 $weekday = strftime("%A"); //声明变量$weekday的值 switch($weekday){ //switch语句,判断$weekday的值 case "星期一": //如果变量的值为“星期一” echo "今天是$weekday ,新的一周开始了。"; break; case "星期二": //如果变量的值为“星期二” echo "今天是$weekday ,保持昨天的好状态,继续努力!"; break; case "星期三": //如果变量的值为“星期三” echo "今天是$weekday ,真快啊,过去1/2周了。"; break; case "星期四": //如果变量的值为“星期四” echo "今天是$weekday ,还有1天放假了."; break; case "星期五": //如果变量的值为“星期五” echo "今天是$weekday ,呵呵,明天有什么安排呢!。"; break; default: //默认值 echo "今天是$weekday , 呵呵。"; break; } ?> </body> </html>