本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
阿里云开发者社区用户服务协议
》和
《
阿里云开发者社区知识产权保护指引
》。如果您发现本社区中有涉嫌抄袭的内容,填写
侵权投诉表单
进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
echo
date_default_timezone_get();
date_default_timezone_set(
'Asia/Shanghai'
);
date_default_timezone_set(
'PRC'
);
date_default_timezone_set(
'Asia/Shanghai'
);
$time
=
date
(
"Y-m-d H:i:s"
);
$time
=
StrToTime
(
$time
);
2.获取本地日期时间:
echo
date
(
'Y:m:d h:i:s'
);
格式:string
date
( string format [, int timestamp] )
还有一些格式:
format字符
返回值例子
ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加)
Examples: 1999 or 2003
4 位数字完整表示的年份
例如:1999 或 2003
2 位数字表示的年份
例如:99 或 03
小写的上午和下午值
am 或 pm
大写的上午和下午值
AM 或 PM
Swatch Internet 标准时
000 到 999
小时,12 小时格式,没有前导零
1 到 12
小时,24 小时格式,没有前导零
0 到 23
小时,12 小时格式,有前导零
01 到 12
小时,24 小时格式,有前导零
00 到 23
有前导零的分钟数
00 到 59>
秒数,有前导零
00 到 59>
时区标识(PHP 5.1.0 新加)
例如:UTC,GMT,Atlantic/Azores
是否为夏令时
如果是夏令时为 1,否则为 0
与格林威治时间相差的小时数
例如:+0200
本机所在的时区
例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。
-43200 到 43200
完整的日期/时间
ISO 8601 格式的日期(PHP 5 新加)
2004-02-12T15:19:21+00:00
RFC 822 格式的日期
例如:Thu, 21 Dec 2000 16:01:07 +0200
从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数
参见
time()
5.microtime -- 返回当前 Unix 时间戳和微秒数,返回格式:msec sec
6.strftime -- 根据区域设置格式化本地时间/日期,这个参数比较多,详情见手册。经常和另一个函数同时出现:strptime -- 解析由
strftime()
生成的日期/时间
$format
=
'%d/%m/%Y %H:%M:%S'
;
$strf
=
strftime
(
$format
);
echo
"$strf\n"
;
6.mktime -- 取得一个日期的 Unix 时间戳
参数int hour , int minute , int second , int month , int day , int year
当你要表示某个月的最后一天,可以用下个月的第0天表示(也可以用负数):
$lastday
=
mktime
(0, 0, 0, 3, 0, 2000);
echo
strftime
(
"Last day in Feb 2000 is: %d"
,
$lastday
);
7.time -- 返回当前的 Unix 时间戳
这个时间戳,一般我们作为参数,用作前面的函数,比如date()
$nextWeek
= time() + (7 * 24 * 60 * 60);
echo
'Next Week: '
.
date
(
'Y-m-d'
,
$nextWeek
) .
"\n"
;
二、时间日期转换
1、checkdate(month,day,year)函数验证指定的值合法性,该函数返回 true,否则返回 false。
if
(
checkdate
(4,31,2013)==true){
echo
1;
else
{
echo
0;
if
(
checkdate
(4,30,2013)==true){
echo
1;
else
{
echo
0;
2、日期转换成时间戳
$time=date("Y-m-d H:i:s");
$time=StrToTime($time);
3、时间戳转换成日期
$time="1366704555";
$time=date("Y-m-d H:i:s",$time);
4、获取指定日期
date_default_timezone_set(
'Asia/Shanghai'
);
echo
"今天:"
,
date
(
"Y-m-d"
,time()),
"<br>"
;
echo
"今天:"
,
date
(
"Y-m-d"
,
strtotime
(
"26 april 2013"
)),
"<br>"
;
echo
"昨天:"
,
date
(
"Y-m-d"
,
strtotime
(
"-1 day"
)),
"<br>"
;
echo
"明天:"
,
date
(
"Y-m-d"
,
strtotime
(
"+1 day"
)),
"<br>"
;
echo
"一周后:"
,
date
(
"Y-m-d"
,
strtotime
(
"+1 week"
)),
"<br>"
;
echo
"一周零两天四小时两秒后:"
,
date
(
"Y-m-d G:H:s"
,
strtotime
(
"+1 week 2 days 4 hours 2 seconds"
)),
"<br>"
;
echo
"下个星期四:"
,
date
(
"Y-m-d"
,
strtotime
(
"next Thursday"
)),
"<br>"
;
echo
"上个周一:"
.
date
(
"Y-m-d"
,
strtotime
(
"last Monday"
)).
"<br>"
;
echo
"一个月前:"
.
date
(
"Y-m-d"
,
strtotime
(
"last month"
)).
"<br>"
;
echo
"一个月后:"
.
date
(
"Y-m-d"
,
strtotime
(
"+1 month"
)).
"<br>"
;
echo
"十年后:"
.
date
(
"Y-m-d"
,
strtotime
(
"+10 year"
)).
"<br>"
;
5、php获取微博(博文、动态)发表于多久时间前
另一方法:
http://xuqin.blog.51cto.com/5183168/1264254
function
maktimes(
$time
){
$t
=time()-
$time
;
$f
=
array
(
'31536000'
=>
'年'
,
'2592000'
=>
'个月'
,
'604800'
=>
'星期'
,
'86400'
=>
'天'
,
'3600'
=>
'小时'
,
'60'
=>
'分钟'
,
'1'
=>
'秒'
foreach
(
$f
as
$k
=>
$v
){
if
(0 !=
$c
=
floor
(
$t
/(int)
$k
)){
return
'发表于'
.
$c
.
$v
.
'前'
;
$time
=
"1366939913"
;
echo
maktimes(
$time
);
6、php计算两日期剩余(间隔)时间天数
function
format(
$a
,
$b
){
if
(
strtotime
(
$a
)>
strtotime
(
$b
)) list(
$a
,
$b
)=
array
(
$b
,
$a
);
$start
=
strtotime
(
$a
);
$stop
=
strtotime
(
$b
);
$extend
= (
$stop
-
$start
)/86400;
$result
[
'extends'
] =
$extend
;
if
(
$extend
<7){
$result
[
'daily'
] =
$extend
;
}
elseif
(
$extend
<=31){
if
(
$stop
==
strtotime
(
$a
.
'+1 month'
)){
$result
[
'monthly'
] = 1;
}
else
{
$w
=
floor
(
$extend
/7);
$d
= (
$stop
-
strtotime
(
$a
.
'+'
.
$w
.
' week'
))/86400;
$result
[
'weekly'
] =
$w
;
$result
[
'daily'
] =
$d
;
}
else
{
$y
=
floor
(
$extend
/365);
if
(
$y
>=1){
$start
=
strtotime
(
$a
.
'+'
.
$y
.
'year'
);
$a
=
date
(
'Y-m-d'
,
$start
);
if
(
$start
>
$stop
){
$a
=
date
(
'Y-m-d'
,
strtotime
(
$a
.
'-1 month'
));
$m
=11;
$y
--;
$extend
= (
$stop
-
strtotime
(
$a
))/86400;
if
(isset(
$m
)){
$w
=
floor
(
$extend
/7);
$d
=
$extend
-
$w
*7;
}
else
{
$m
= isset(
$m
)?
$m
:
round
(
$extend
/30);
$stop
>=
strtotime
(
$a
.
'+'
.
$m
.
'month'
)?
$m
:
$m
--;
if
(
$stop
>=
strtotime
(
$a
.
'+'
.
$m
.
'month'
)){
$d
=
$w
=(
$stop
-
strtotime
(
$a
.
'+'
.
$m
.
'month'
))/86400;
$w
=
floor
(
$w
/7);
$d
=
$d
-
$w
*7;
$result
[
'yearly'
] =
$y
;
$result
[
'monthly'
] =
$m
;
$result
[
'weekly'
] =
$w
;
$result
[
'daily'
] = isset(
$d
)?
$d
:null;
return
array_filter
(
$result
);
echo
'<pre />'
;
print_r(format(
'2013-4-2'
,
'2013-5-1'
));
echo
'<pre />'
;
echo
'<hr />'
;
$ret_arr
=format(
'2013-3-2'
,
'2013-5-1'
);
echo
'共'
.
$ret_arr
[
'extends'
].
'天'
;
echo
'<br />'
;
echo
$ret_arr
[
'yearly'
].
'年'
;
echo
$ret_arr
[
'monthly'
].
'月'
;
echo
$ret_arr
[
'weekly'
].
'周'
;
echo
$ret_arr
[
'daily'
].
'天'
;
Array
[extends] => 29
[weekly] => 4
[daily] => 1
年1月4周1天
7、获取两日期差值数组
function
getDateDiffArray(
$start_create_date
,
$end_create_date
,
$inclusive
=
'[]'
){
static
$day_interval
= 86400;
$data
=
array
();
$start
= (int)
strtotime
(
$start_create_date
);
$end
= (int)
strtotime
(
$end_create_date
);
if
(
$start
>
$end
)
return
$data
;
for
(
$start
+=
$day_interval
;
$start
<
$end
;){
$data
[] =
date
(
'Y-m-d'
,
$start
);
$start
+=
$day_interval
;
switch
(
$inclusive
){
case
'()'
:
break
;
case
'[]'
:
array_unshift
(
$data
,
$start_create_date
);
if
(
$start_create_date
!=
$end_create_date
)
$data
[] =
$end_create_date
;
break
;
case
'(]'
:
$data
[] =
$end_create_date
;
break
;
case
'[)'
:
array_unshift
(
$data
,
$start_create_date
);
break
;
default
:
break
;
return
$data
;
echo
'<pre />'
;
print_r( getDateDiffArray(
"2013-04-26"
,
"2013-05-01"
));
echo
'<pre />'
;
Array
[0] => 2013-04-26
[1] => 2013-04-27
[2] => 2013-04-28
[3] => 2013-04-29
[4] => 2013-04-30
[5] => 2013-05-01
function intervalDate($begDate,$endDate){
$date = array();
$begTime = strtotime($begDate)+86400;
$endTime = strtotime($endDate);
while($begTime < $endTime){
$date[]= date("Y-n-d",$begTime);
$begTime+=86400;
return$date;
$begDate="2013-04-26";
$endDate="2013-05-01";
echo"<pre>";
print_r(intervalDate($begDate,$endDate));
Array
[0] => 2013-4-27
[1] => 2013-4-28
[2] => 2013-4-29
[3] => 2013-4-30
8、获取某个日期的 周数、周对应的开始结束时间
function getWeekStartEndDay($day){
$g = strftime("%u",strtotime($day));
returnarray(
'week_num'=>strftime("%V",strtotime($day)),
'week_start_day'=>strftime('%Y-%m-%d',strtotime($day)-($g-1)*86400),
'week_start_day_cn'=>strftime('%Y年%m月%d日',strtotime($day)-($g-1)*86400),
'week_end_day'=>strftime('%Y-%m-%d',strtotime($day) + (7-$g)*86400),
'week_end_day_cn'=>strftime('%Y年%m月%d日',strtotime($day) + (7-$g)*86400)
echo'<pre />';
print_r(getWeekStartEndDay("2013-04-26"));
Array
[week_num] =>
[week_start_day] => 2013-04-27
[week_start_day_cn] => 2013年04月27日
[week_end_day] => 2013-05-03
[week_end_day_cn] => 2013年05月03日
9、php获取服务器时间
http://xuqin.blog.51cto.com/5183168/1177160
10、php根据出生日期计算年龄
http://xuqin.blog.51cto.com/5183168/1168369