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:$now:$now";// 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);// returntrueor 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) {
//=>
//string(4) "2008"
//=>
//string(2) "12"
//=>
//string(4) "2 12"
//=>
//string(2) "30"
//=>
//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>
页:
[1]