时间如何用php获取当前时间

当前时间  时间:2021-01-31  阅读:()

php获取当前时间使用函式date()实现

<?php echo$showtime=date("Y-m-d H:i:s");?>

显示的格式:年-月-日小时:分钟:秒

相关时间参数:a- "am"或是"pm"A- "AM"或是"PM"d-几日二位数字若不足二位则前面补零 ;如: "01"至"31"

D-星期几三个英文字母;如: "F ri"

F-月份英文全名;如: "January"h- 12小时制的小时;如: "01"至"12"

H-24小时制的小时;如: "00"至"23"g- 12小时制的小时不足二位不补零G- ;如: "1"至12"

24小时制的小时不足二位不补零i-分钟; ;如: "0"至"23"

如: "00"至"59"j-几日二位数字若不足二位不补零l-星 ;如: "1"至"31"

期几英文全名;如: "F rid ay"m-月份二

位数字若不足二位则在前面补零;如: "01"至"12"n-月份二位数字若

不足二位则不补零;如: "1"至"12"

M-月份三个英文字母;如: "Jan"s -秒;如: "00"至"59"

S-字尾加英文序数二个英文字母;如: "th" "nd" t -指定月份的天数;如:

"28"至"31"

U-总秒数w-数字型的星期几如: "0" (星期日)至"6" (星期六)Y-年 四位数字;如:

"1999"y-年二位数字;如: "99"z-一年中的第几天;如: "0"至"365"

可以自由设定显示的内容 ,连接符号或是显示位置 ,例如date("m-d H")或者date("dmY");?>php中的日期处理

加入时间 2004-12-18 17:35:22大小:12KB阅读次数:1405

PHP中的日期处理

转贴 xiaxia日期 2004-05-26人气 9

我正打算用PHP编写一种帮助处理系统。我发现我必须知道处理完最后一位客户的问题后

已经过去了多长时间当我过去用ASP时解决这个问题相当简单 ASP有相应的函数DateD iff可以给出两个日期间间隔多少月、多少天和多少秒。当我搜寻完 PHP手册后我发现PHP并没有类似的函数。

本文包含以下内容

1、得到目前的日期和时间我们有多少种方式

2、改变日期显示的方式日期和时间的显示形式

3、转换现在的日期为Unix的时间戳值

4、改变日期a. 增加时间b.减去时间c. 找出两日期之间的间隔

5、 为P HP添加DateAdd函数

6、 为PHP添加DateDiff函数

**得到目前的日期和时间

在Un ix中时间的表示方式为计算从 1970年1月1日零时起所过去的秒数 这称为UN IX时间戳(Unix Epoch)。

如果我们有这样一段的代码

?echo time();

?

将返回值958905820

而此时的时间为2000年5月21日12时43分。

你也许会说这相当不错。当这对我毫无帮助或者只有一点帮助。在 PHP中对日期处理的函数都必须用到由time()返回的时间戳值。 同时 由于 P HP在Unix和W ind o ws系统中均使用同样的时间戳值这就允许你不需要修改代码即可在不同的系统间移植。 另外的一个好处是time()函数返回的是一个整数你可以将其作为整数字段或文本字段存入数据库而不必使用特别的日期/时间字段。

你已经基本了解了Unix的时间戳值现在让我们来展示它的实际用途。

改变日期显示的方式日期和时间的显示形式

P HP提供两个办法来将Unix的时间戳值转换成为有用的数据。 第一个是d ate()函数。这个函数有两个参数一第一个字符串用于设定你所希望返回的格式第二个为 Unix的时间戳值。格式化字符串通过一些简单的特殊格式化字符来显示你所希望看到的格式的日期和时间。 假设你希望日期以这样的格式显示“ 18h01 Sunday 21 May”。

我们需要对字符串中的每一部分使用一个特殊格式化字符你可以从 PHP手册中日期和时间函数库中找到。 这样的特殊格式化字符数量不少 他们所表示的类似于星期几、 月的英文名、用2位或4位数表示的年份是否是上午(AM)或下午(PM)以及其他。对于这个例子我们需要的特殊字符为„H'24小时制的小时

„ i'-分钟

„ l '星期几的英文全名

„d'-本月的第几日

„F'-月份的英文全名

因此我们的格式化字符串为” Hhi I d F” PHP代码为

?echo date("Hhi I d F" ,time());

?

当我们执行这段代码我们发现我们所得到的结果为

180609 Sunday 21 May

这样的结果看起来有些奇怪。让我们再查一下 PHP手册原来‟h'所代表的是12小时制的小时数。这再次证明了一句真理 “计算机只做你所告诉它该做的 而不是你想要它做的” 。 我们有两个选择。第一个是在h前使用转义字符“”  echo date("Hhi I d F", time());

我们得到这样的结果

18h12 Sunday 21 May

这正是我们所要的。 但如果我们在一个十分复杂的句子中需要包含日期和时间 我们是否需要对每个字符使用转义字符

答案当然是不。我们使用另一个函数s trftime() 。s trftime()有两个好处。第一个好处我们并不在本文讨论范围内-如果你使用s etI o c aI e()函数 你可以通过s trftime得到相应语言的月份的名称。 另外的一个好处是你可以将特别的日期和时间的格式化字符包含在你的字符串中。 这同时也意味着无论你是否要学习 date()函数的所有特殊格式化字符你都必须学习一整套完全不同的格式化字符。s trftime()工作的方式和d ate()没有什么不同除了特殊格式化字符的前面必须添加一个百分号%。如果用s trftime()函数前面例子的代码如下

?ec ho s trftime("%Hh%M%A%d%b" ,time());

?

结果为

18h24 Sunday 21 May

这也许看起来将简化繁但考虑一下如果你所需要的显示的为"Today is Sunday 21 May 2000.

The time is somewhere close to 18h24."我想使用date()函数无疑令人感到厌烦。 在开始的时候我提及我们有两种方式可以从Unix时间戳值中得到有用的数据。我们刚刚了解了date()和s trftime()。另一个getdate()。这个函数只需要 Unix的时间戳值作为参数而函数的返回值为日期和时间的数组。

下面是一个例子

?

$d ate_time_array=getd ate(t im e());e c ho$d ate_time_array[ "we e kd ay"];

?

返回的结果为

S und ay

除了"we ekd ay"该数组的其他部分为

"seconds"-秒

"min utes"-分

"hours"-小时

“mday"-本月的第几天

"wd ay"-本周的第几天(数字)

"mon"-月(数字)

-年

"yd ay"-r本年的第几天(数字)

"month"-月份全名

我们现在可以得到容易辨认的日期和时间。那么其他呢

**转换现在的日期为Unix的时间戳值

通常你必须处理一些日期或时间格式的数据。 打开M$的一个Acces s数据库所有的日期都以YYYY/MM/D D的格式存储加入目前的日前即为2000/05/27。Mktime()函数可以将一个时间转换成Unix的时间戳值。

函数的格式为 int mktime(int hour, int minute, int second, int month, int day, int year, int );从左往右你必须提供小时、 分、秒、月、天和年。 最后一个参数用于指定你是否处于夏令时 此参数是可选的所以我们将忽略它。

代码如下

?ec ho mktime(0,0,0,5,27,2000);

?

由于不知道小时、分和秒同时这些参数必须填写我将其设置为 0。设置为0意味着时间为午夜。

?

$access_date="2000/05/27";

//exp lode()函数用一个字符串作为分界来分解另一个字符串。这个例子$access_date通过字符串”/”来分解$date_elements=explo de("/" ,$acc ess_date);

//此时

//$date_eleme nts[0]=2000

//$date_eleme nts[1]=5

//$date_eleme nts[2]=27echo mktime(0,0,0,$date_elements [1],$date_elements[2],$date_e lements [0]);

?

我们看一个比从 Access数据库单纯获得日期更复杂的情况我们得到一个以下格式的日期和时间 2000/05/2702:40:21 PM

?

//来自Access的字符串

$date_time_s tring="2000/05/2702:40:21 P M";

//将字符串分解成3部分日期、时间和上午/下午

$dt_elements=exp lo de("",$date_time_s tring);

//分解日期

$date_elements=exp lo de("/" ,$dt_elements[0]);

//分解时间

$time_elements=exp lo de(":" ,$dt_elements[ 1]);

//如果是下午我们将时间增加12小时以便得到24小时制的时间if($dt_ele ments [2]=="P M") {$time_e le me nts[0]+=12;}

//输出结果ec ho mktime($t ime_e leme nts [0],$t ime_e leme nts[ 1],$t ime_e leme nts[2],$date_eleme nt s[1],$date_elements[2],$date_eleme nts[0]);

**修改日期

有时我们需要知道6小时以后是什么时间 35天前的日期或者从你最后一次玩Q uake 3后已过去多少秒。我们已经知道如何用mkt ime()函数从单独的日期和时间中获得Un ix的时间戳值。如果我们需要的并非目前日期和时间的Unix时间戳值我们该咋办下面是一些练习可以帮助说明我们后面所要做的。

正如前面所见 mkt ime()使用以下参数小时、分、秒、月、天和年。想想第二节 getd ate()函数可以为我们获得这些参数。

?

//将目前的时间戳值放入一数组内

$t im e s tamp=time();ec ho$times tamp;ec ho"p";

$d ate_time_array=getd ate($t ime s tamp);

//用mkt ime()函数重新产生Un ix时间戳值

$t im e s tamp=mktime($d ate_time_arr ay["ho urs"],

$d ate_time_array["minute s" ],$d ate_time_array[ "s eco nds"],$d ate_tim e_array["mo n"],

$d ate_time_array["md ay" ],$d ate_time_arr ay[ "year"]);ec ho$times tamp;

?

看起来有一些令人感到迷惑。我将用一些变量来使上面的程序看起来更容易了解。

?

//将目前的时间戳值放入一数组内

$t im e s tamp=time();ec ho$time s tamp;echo"p";

$d ate_time_array=getd ate($t ime s tamp);

$hours=$date_time_array[ "hours"];

$minutes=$date_time_array["minut es"];

$s ec onds=$date_time_array[ "s econds"];

$mo nth=$d ate_time_array["mo n"];

$d ay=$d ate_time_arr ay["md ay"];

$year=$d ate_t ime_arr ay["ye ar"];

//用mkt ime()函数重新产生Un ix时间戳值

$times tamp=mktime($hours ,$minutes,$s ec onds,$month,$day,$year);ec ho$times tamp;

现在我们将由getdate()所产生的时间戳值放入相对应的名称变量中 所以代码变得相对容易阅读和理解。现在如果我们需要在目前的时间上加上19个小时我们用$ho ur s+19代替mktime()函数中的$ho urs。 mkt ime()将自动为我们将时间转到第二天。

?

//将目前的时间戳值放入一数组内

$t im e s tamp=time();ec ho s trftime( "%Hh%M%A%d%b",$times tamp);echo"p";

$d ate_time_array=getd ate($t ime s tamp);

$hours=$date_time_array["hours"];

$minutes=$date_time_array["minut es"];

$s ec onds=$date_time_array["s ec onds"];

$mo nth=$d ate_time_array["mo n"];

$d ay=$d ate_time_arr ay["md ay"];

$year=$d ate_t ime_arr ay["ye ar"];

//用mkt ime()函数重新产生Un ix时间戳值

//增加19小时

$times tamp=mktime($hours+19,$minutes,$s ec onds ,$month,$day,$year);ec ho s trftime( "%Hh%M%A%d%b",$times tamp);echo"br~E after adding 19 hours";

?

运行后得到

14h58 Saturday 03 Jun

09h58 Sunday 04 Jun

~E after adding 19 hours减少时间也是同样的你只需要减少相应变量的值即可。 得到两个不同时间值的差同样也是非常简单。你所需要做的只是将两个时间值转换为Unix的时间戳值然后两者相减即可。两者之差即为两个时间所相隔的秒数。 另外一些算法可以很快地将秒转为天、小时、分和秒。

**为P HP添加DateAdd函数

正如在文章一开始我所说的写本文的原因是因为我在PHP中找不到类似ASP的DateDiff函数。在介绍完PHP是如何处理日期和时间 让我们将ASP中常用的两个函数移植到 PHP。第一个函数是DateAdd。

根据Vb sc rip t的文档 Date Add(int erv al,numb er,date)函数的定义为“返回已添加指定时间间隔的日期。 ”Inetrval为表示要添加的时间间隔字符串表达式 例如分或天 numb er为表示要添加的时间间隔的个数的数值表达式 Date表示日期。

Interva l(时间间隔字符串表达式)可以是以下任意值 yyyy year年q Quarter季度m Month月y Day of year一年的数d Day天w Weekday一周的天数ww Week of year周h Hour小时n Minute分s Second秒w、 y和d的作用是完全一样的 即在目前的日期上加一天 q加3个月 ww加7天。?function DateAdd($interval,$number,$date) {

$d ate_time_array=getd ate($d ate);

$hours=$date_time_array["hours"];

$minutes=$date_time_array["minut es"];

$s ec onds=$date_time_array["s ec onds"];

$mo nth=$d ate_time_array["mo n"];

$d ay=$d ate_time_arr ay["md ay"];

$year=$d ate_t ime_arr ay["ye ar"];s witc h($interval) {c as e"yyyy":$ye ar+=$numb er;break;c as e"q":$month+=($numb er*3);break;c as e"m":$month+=$number;break;

cas e:cas e"d":c as e"w":$day+=$numb er;break;c as e"ww":$day+=($numb er*7);break;c as e"h":$hours+=$numb er;break;cas e"n":$minutes+=$number;break;case"s":$seconds+=$number;break;

}

$times tamp=mktime($hours ,$minutes,$s ec onds,$month,$day,$year);return$t imes tamp;}

?

我们可以将上面的代码保存为d atead d.inc文件然后运行以下代码

?inc lud e('d ateadd.inc');

$temp t ime=time();ec ho s trftime( "%Hh%M%A%d%b",$temp time);

$temp t ime=DateAd d("n" ,50,$temp t im e);ec ho"p";ec ho s trftime( "%Hh%M%A%d%b",$temp time);

我们将得到

15h41 Saturday 03 Jun

16h31 Saturday 03 Jun

为PHP添加DateDiff函数

现在DateAdd已经完成那么DateDiff呢

根据文档 DateD iff(interval,date 1,date2)函数的定义为“返回两个日期之间的时间间隔” 。

Interva ls参数的用法与Date Add函数中的相同。 出于避免过于复杂的考虑我们决定忽略Vb sc rip t中Date D iff函数中其它复杂的参数 即其两个可选的参数变量[firs td ayo fweek[,firs tweeko fy ear]] (它们用于决定星期中第一天是星期天还是星期一和一年中第一周的常数。

而且我们只允许interva ls有以下五个值 "w"(周卜"d"(天)、 ”h"(小时)、 ”n"(分钟)和"s"(秒)。

Let's see what we can come up with:下面的代码是我们所需要的

?

Function DateDiff($interval,$date 1,$date2) {

//得到两日期之间间隔的秒数

$timedifferenc e=$date2-$date 1;s witch($interval) {c as e"w":$retval=b cdiv($timed ifferenc e,604800);break;c as e"d":$retval=b cdiv($timedifferenc e,86400);break;c as e"h":$retval=b cdiv($timedifferenc e,3600);break;c as e"n":$retval=b cdiv($timedifferenc e,60);break;c as e"s":$retval=$timed ifferenc e;break;

}return$retva l;}

?

将上面的代码存为datediff.inc文件然后运行下面的代码

?inc lud e('d atediff.inc');inc lud e('d atead d.inc');

$c urrentt ime=t ime();ec ho"C urrent t ime: ". s trft ime("%Hh%M%A%d%b" ,$c urrentt ime)."b r";

$newt ime=DateAdd("n",50,$c urrentt ime);echo"Time plus 50 minutes: ". strftime("%Hh%M%A%d%b" ,$newtime)."br";

$temptime=DateD iff("n",$currenttime,$newtime);echo"Interval b etween two times: ".$temptime;

?

如果一切顺利你可以看到以下结果

Current time: 16h23 Saturday 03 Jun

Time plus 50 minutes: 17h 13 Saturday 03 Jun

Interval between two times:50

如果你在Unix机器上运行PHP,你必须编译PHP支持BC高精度函数。你必须从以下地址http://www.php.net/extra/numb er4.tar.gz下载BC库然后将其解压到PHP4的根目录下重新编译PHP,编译时要加上--enab le-b cmath的选项。 (详细说明见PHP4中README.BCMATH。

PHP4的Windows版本则不需要做任何修补即可直接使用 BC高精度函数。

现在你已经得到处理日期和时间的函数剩下的就是如何将其运用到你的 PHP程序中。php时间显示例加入时间 2004-12-18 17:22:53大小:1 KB阅读次数:1564第一种简单(供学习用)<?PHP

$today=date("Y-m-d G:i:s");ec ho"<c enter>$to day</c enter>";

?>

第二种

/*

Format Time

*/

F unc tio n fo rmatT ime($t ime,$typ e="1"){s witc h($typ e){case 1;#2002-06-0418:58 Tuesdayreturn date("Y.m.d H:i",$time)."<font color=blue>".date(" l",$time)."</font>";case 2;#June 2002return date("M Y",$time);case 3;#2002-06-0418:58return date("Y.m.d H:i",$time);case 4;#06-04 AMreturn date("m-d A",$time);case 5;#06-0418:58return date("m.d H:i",$time);

}

}

不知道对于两个以字符串格式存储的日期得比较会有什么结果例如„ 2007-07-12'

„2007-06-27' 这种日期最好用什么方法来比较呢就大小而论leehao July 17th,20061:33 am

/*日期比较*/$D ate_1="2007-07-12";

$Date_2="2007-06-27";

/*

首先用explode这个函数来拆分字符串explode(”这引号里面是条件来的哦 改成:就会用来拆分字符串的可以应用到很多方面去的"后面要拆分的字符串)

*/

$Date_explode_1=explode("-",$Date_1);

$Date_explode_2=explode("-",$Date_2);

/*

拆分后的字符串我们通过使用mkt ime函数来计算时间 必须说明一下的是mkt ime计算出来的时间是用秒来算的哦 后面就简单啦,具体可以看手册里面详细得很

*/$Day_1=mktime(0,0,0,$Date_explo de_1[1],$Date_explode_1[2],$Date_exp lode_1[0]);

$Day_2=mktime(0,0,0,$Date_explode_2[1],$Date_explode_2[2],$Date_explode_2[0]);

$Days=round(($Day_1-$Day_2)/3600/24);echo"您要的结果是$Days天哦";

?>

请问如何得到90天以后的日期加入时间 2004-12-18 18:09:53大小:1 KB阅读次数:158

//获取今天的时间信息

$Y=date(Y);

$m=date(m);

$d=date(d);

〃$m为月 $d为天,$Y为年,"+"号表示之后用"-"号可以得到多少天前的日期  "丫年m月d日",只是显示的格式,你可以改成"Y-m-d",

$out_date仁date( "Y年m月d日",mktime(0,0,0,$m,$d+7,$Y) );//—周后

$out_date2=date( "Y年m月d日",mktime(0,0,0,$m,$d+14,$Y) );//二周后

$o ut_d ate3=d ate( "Y 年m月 d日", mkt ime(0,0,0,$m+1,$d,$Y) );//一个月后

$out_d ate4=d ate( "Y 年m月 d日", mkt ime(0,0,0,$m+2,$d,$Y) );//二个月后

$o ut_d ate 5=d ate( "Y 年m月 d日", mkt ime(0,0,0,$m+3,$d,$Y) );//三个月后

$o ut_d ate6=d ate( "Y 年m月 d日", mkt ime(0,0,0,$m+6,$d,$Y) );//六个月后

$o ut_d ate7=d ate( "Y 年m月 d日", mkt ime(0,0,0,$m,$d,$Y+1) );//一年后

Hostodo独立日提供四款特价年付VPS套餐 最低年付$13.99

前天,还有在"Hostodo商家提供两款大流量美国VPS主机 可选拉斯维加斯和迈阿密"文章中提到有提供两款流量较大的套餐,这里今天看到有发布四款庆祝独立日的七月份的活动,最低年付VPS主机13.99美元,如果有需要年付便宜VPS主机的可以选择商家。目前,Hostodo机房可选拉斯维加斯和迈阿密两个数据中心,且都是基于KVM虚拟+NVMe整列,年付送DirectAdmin授权,需要发工单申请。(如何...

日本vps云服务器选择指南。

日本vps云服务器怎么选择?很多人都会遇到日本vps和日本云服务器怎么选择的问题,日本云服务器具有免备案的特点。小编今天就分析一下日本云服务器价格多少钱,以方便大家选购的时候有个更加合适的取舍。日本云服务器租用前比较选择,高性能、安全、高效、免备案日本云服务器是很关键的因素。那么,日本云服务器该怎么选择呢?日本作为我们的邻国,与其贸易、文化往来是比较多的。日本云服务器价格多少钱一年?一、日本·CN...

SugarHosts新增Windows云服务器sugarhosts六折无限流量云服务器六折优惠

SugarHosts糖果主机商我们较早的站长们肯定是熟悉的,早年是提供虚拟主机起家的,如今一直还在提供虚拟主机,后来也有增加云服务器、独立服务器等。数据中心涵盖美国、德国、香港等。我们要知道大部分的海外主机商都只提供Linux系统云服务器。今天,糖果主机有新增SugarHosts夏季六折的优惠,以及新品Windows云服务器/云VPS上线。SugarHosts Windows系统云服务器有区分限制...

当前时间为你推荐
免费卡巴斯基杀毒软件有什么免费杀毒软件好点啊..卡巴斯基的免费三十天我已经试了,那是不是已经不能再免费享受卡巴了??电脑管家和360哪个好360卫士和电脑管家,哪个更好手机浏览器哪个好手机什么浏览器最好用?绝地求生加速器哪个好玩绝地求生用什么加速器好啊?二手车网站哪个好卖二手车网站哪个好炒股软件哪个好股票软件哪个最好用?苹果手机助手哪个好iphone手机助手哪个好用?杰士邦和杜蕾斯哪个好杰士邦的超薄款跟杜蕾斯的超薄款,哪个舒服点?尼康和佳能单反哪个好尼康和佳能哪个好啊?播放器哪个好安卓手机视频播放器哪个好点
双线主机租用 lamp安装 ddos 联通c套餐 adman mach 免备案空间 koss patcha 服务器怎么绑定域名 网页背景图片 panel1 天互数据 空间论坛 699美元 徐正曦 新家坡 raid10 腾讯数据库 数据湾 更多