您的位置 首页 php

PHP 中的日期处理

1.时间戳

1)time

定义和用法

time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。

语法

time();

返回值:返回包含当前时间的 Unix 时间戳的整数。

例:

<php

echo time();

?>

2)microtime

定义和用法

microtime() 函数返回当前 Unix 时间戳的微秒数。

语法

microtime(get_as_float);

参数描述

get_as_float可选。当设置为 TRUE 时,规定函数应该返回 浮点数 ,否则返回 字符串 。默认为 FALSE。

返回值:

默认返回字符串 “microsec sec” ,其中 sec 为自 Unix 纪元(0:00:00 January 1, 1970 GMT)起的秒数,microsec 为微秒部分。

如果 get_as_float 参数设置为 TRUE,则返回浮点数,表示自 Unix 纪元起精确到微秒的以秒为单位的当前时间。

例:

<php

echo microtime();

?>

例:microtime.php

<?php

$start_time=microtime(true);

echo “$start_time”.”<br>”;

echo “hello world<br>”; //中间要运行的程序

$end_time=microtime(true);

echo “$start_time”.”<br>”;

$time=$end_time-$start_time;

echo ‘程序执行时间’.$time;

?>

结果:

3)mktime

定义和用法

gmmktime() 函数返回日期的 UNIX 时间戳。

提示:该函数与 gmmktime() 相同,不同的是传递的参数代表了日期(而不是 GMT 日期)。

语法

mktime(hour,minute,second,month,day,year,is_dst);

year 可选。规定年。

参数描述

hour可选。规定小时。

minute可选。规定分。

second可选。规定秒。

month可选。规定月。

day可选。规定天。

is_dst

可选。如果时间在夏令时 (DST) 期间,则设置为 1,否则设置为 0,若未知则设置为 -1(默认)。

如果未知,PHP 会自己进行查找(可能产生意外的结果)。

注意:该参数在 PHP 5.1.0 中被废弃。取而代之使用的是新的时区处理特性。

返回值:返回整数的 Unix 时间戳,如果错误则返回 FALSE。

例:mktime.php

<?php

echo date(“M-d-Y”, mktime(0, 0, 0, 12, 32, 1997));//当遇到天数超出范围时,mktime将自动调整

?>

结果:

2.获取日期和时间

1)getdate

定义和用法

getdate() 函数返回某个时间戳或者当前本地的日期/时间的日期/时间信息。

语法

getdate(timestamp);

参数描述

timestamp可选。规定 Unix 时间戳,整数值。默认为当前本地时间(time())。

返回值:

返回带有与时间戳相关的信息的关联数组:

[seconds] – 秒

[minutes] – 分

[hours] – 小时

[mday] – 一个月中的第几天

[wday] – 一周中的某天

[mon] – 月

[year] – 年

[yday] – 一年中的某天

[weekday] – 星期几的名称

[month] – 月份的名称

[0] – 自 Unix 纪元以来经过的秒数

例:getdate.php

<?php

$time=getdate();//获取当时服务器是的日期与时间

//根据时间打招呼

if($time[‘hours’]>=6 && $time[‘hours’]<12){

$msg=’上午好’;

}else if($time[‘hours’]>=12 && $time[‘hours’]<18){

$msg=’下午好’;

}else{

$msg=’晚上好’;

}

echo $msg.'<br>’;

//星期

echo ‘今天是’.$time[‘weekday’].'<br>’;

//生日

if($time[‘mon’]==4 && $time[‘mday’]==13){

echo ‘Happy Birthday!’;

}

?>

结果:

2)gettimeofday

定义和用法

gettimeofday() 函数返回当前时间。

语法

gettimeofday(return_float);

参数描述

return_float可选。当设置为 TRUE 时,返回浮点数,而不是数组。默认是 FALSE。

返回值:

默认返回关联数组,带有如下数组键名:

[sec] – Unix 纪元以来的秒

[usec] – 微秒

[minuteswest] – 格林尼治以西的分

[dsttime] – 夏令时修正类型

如果 return_float 参数设置为 true,则返回浮点数。

例:gettimeofday.php

<?php

echo “< pre >”;

print_r(gettimeofday());//打印字符串数组

echo “</pre>”;

echo gettimeofday(true);//打印返回浮点数

?>

结果:

3) localtime

定义和用法

localtime() 函数返回本地时间。

语法

localtime(timestamp,is_assoc);

参数描述

timestamp可选。规定 Unix 时间戳。如果未规定 timestamp,则默认为当前的本地时间 time()。

is_assoc

可选。规定返回关联数组还是索引数组。如果为 FALSE,则返回索引数组。如果为 TRUE,则返回关联数组。默认为 FALSE。

关联数组的键名如下:

[tm_sec] – 秒数

[tm_min] – 分钟数

[tm_hour] – 小时

[tm_mday] – 月份中的第几天

[tm_mon] – 年份中的第几个月,从 0 开始表示一月份

[tm_year] – 年份,从 1900 开始

[tm_wday] – 星期中的第几天 (Sunday=0)

[tm_yday] – 年中的第几天

[tm_isdst] – 夏令时当前是否生效

返回值:返回包含 Unix 时间戳组件的数组。

例:localtime.php

<?php

$localtime = localtime();//获取本地时间

$localtime_assoc = localtime(time(), true);//获取返回包含字符串索引的数组

echo “<pre>”;

print_r($localtime);//打印本地时间

print_r($localtime_assoc);//打印数组

echo “</pre>”;

?>

结果:

3.日期和时间的格式化

语法

date(format,timestamp)

参数描述

format必需。规定时间戳的格式。

timestamp可选。规定时间戳。默认是当前时间和日期。

注释:时间戳是一种字符序列,它表示具体事件发生的日期和事件。

获得简单的日期

date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。

下面列出了一些常用于日期的字符:

d – 表示月里的某天(01-31)

m – 表示月(01-12)

Y – 表示年(四位数)

1 – 表示周里的某天

其他字符,比如 “/”, “.” 或 “-” 也可被插入字符中,以增加其他格式。

例:date.php

<?php

isDate(“Apr 25 2007 11:30AM”);//调用isDate()函数

isDate(“2007-04-25”);//调用isDate()函数

function isDate($str) //创建一个函数 形参为$str

{

if (($timestamp = strtotime($str)) === false) { //将字符串转换成时间 转换失败返回-1或者false

echo “$str is not date”;

} else {

echo “[$str] ” . date(“Y/m/d”, $timestamp); //格式化打印时间

}

}

?>

结果:

注:strtotime 字符串到日期的函数

定义和用法

strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)。

注意:如果年份表示使用两位数格式,则值 0-69 会映射为 2000-2069,值 70-100 会映射为 1970-2000。

注意:请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),则使用欧洲的 d-m-y 格式。为了避免潜在的错误,您应该尽可能使用 YYYY-MM-DD 格式或者使用 date_create_from_format() 函数。

语法

strtotime(time,now);

参数描述

time必需。规定日期/时间字符串。

now可选。规定用来计算返回值的时间戳。如果省略该参数,则使用当前时间。

返回值:若成功则返回时间戳,失败则返回 FALSE。

4.日期验证函数

1)客户端日期验证

check_client.html

<script language=javascript> //javascript脚本 字符串函数或者正则表达式进行判断

function isDate(obj) //定义一个函数

{

var strDate=obj.value; //创建一个变量来接对象的值

regx=/\d{4}\/\d{2}\/\d{2}/g //正则表达式

if(regx.test(strDate))

{

var DateArray=strDate.split(“/”);

var dateElement=new Date(DateArray[0],parseInt(DateArray[1])-1,DateArray[2]);

//判断日期逻辑

if(!((dateElement.getFullYear()==parseInt(DateArray[0]))&&

((dateElement.getMonth()+1)==parseInt(DateArray[1]))&&

(dateElement.getDate()==parseInt(DateArray[2]))))

{

alert(“格式:YYYY/MM/DD”);

obj.value=”;

}

else

{

alert(“正确”);

}

}

else

{

alert(“格式错误”);

obj.value=”;

}

}

</script>

<form name=”form1″>

<input name=time1>

<input name=button1 type=”submit” onclick=”isDate(form1.time1)”>

</form>

结果:

2)服务器端日期验证

check_server.php

<?php

var_dump(checkdate(2, 29, 2007));//验证日期是否正确 错误返回false

var_dump(checkdate(4, 27, 2007));//验证日期是否正确 正确返回true

?>

结果:

checkdate() 函数用于验证格利高里日期(Gregorian date)。

语法

checkdate(month,day,year);

参数描述

month必需。规定月,从 1 到 12 的数字值。

day必需。规定日,从 1 到 31 的数字值。

year必需。规定年,从 1 到 32767 的数字值。

返回值:如果日期是有效的则返回 TRUE,否则返回 FALSE。

5.PHP时区的设置

PHP默认时区不是北京时间 修改在php.ini配置文件中

例:timezone.php

<?php

//ini_set(‘date.timezone’,’Asia/Shanghai’);

ini_set(‘date.timezone’,’Asia/Hong_Kong’);//修改 变量名和值

echo date(“Y-m-d H:i:s”); //打印当前时间

?>

结果:

6.使用PEAR处理日期

PEAR是PHP的扩展应用库。

请大家多多关注,多多支持!谢谢……

文章来源:智云一二三科技

文章标题:PHP 中的日期处理

文章地址:https://www.zhihuclub.com/77574.shtml

关于作者: 智云科技

热门文章

网站地图