php学习笔记(日期函数用法总结)

 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>

 

 

你可能感兴趣的:(html,PHP,应用服务器,unix,D语言)