1.PHP时间戳函数将日期转化为unix时间戳
世界末日时间戳 PHP
1
|
echo
"世界末日时间戳为:"
.
strtotime
(
"2012-12-21"
)
|
2.将时间戳转化为系统时间
1
|
date
(
'Y-m-d H:i:s'
,
"1228348800"
);
|
(1)获取当天零点时间戳
1
|
$timetoday
=
strtotime
(
date
(
"Y-m-d"
,time()));
|
(2)获取明天零点时间戳
1
|
$tomorrow
=
$timetoday
+ 3600*24;
|
3.PHP时间戳函数获取英文文本日期时间 示例如下:
便于比较,使用date将当时间戳与指定时间戳转换成系统时间
(1)打印明天此时的时间戳strtotime(”+1 day”)
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time());
//明天此时时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"+1 day"
));
|
(2)打印昨天此时的时间戳strtotime(”-1 day”)
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time()) ;
//指定时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"-1 day"
));
|
(3)打印下个星期此时的时间戳strtotime("+1 week")
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time());
//下星期时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"+1 week"
));
|
(4)打印上个星期此时的时间戳strtotime("-1 week")
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time());
//上个星期此时时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"-1 week"
));
|
(5)打印指定下星期几的时间戳strtotime("next Thursday")
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time());
//下星期几时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"next Thursday"
));
|
(6)打印指定上星期几的时间戳strtotime(”last Thursday”)
1
2
3
4
|
//当前时间
echo
date
(
"Y-m-d H:i:s"
,time());
//指定时间
echo
date
(
"Y-m-d H:i:s"
,
strtotime
(
"last Thursday"
));
|
以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间
话说看到别人写的这么一个函数,测试了一下,有些小毛病:对于跨年日期,没有显示年份。修改如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
function
mdate(
$time
= NULL) {
$text
=
''
;
$time
=
$time
=== NULL ||
$time
> time() ? time() :
intval
(
$time
);
$t
= time() -
$time
;
//时间差 (秒)
$y
=
date
(
'Y'
,
$time
)-
date
(
'Y'
, time());
//是否跨年
switch
(
$t
){
case
$t
== 0:
$text
=
'刚刚'
;
break
;
case
$t
< 60:
$text
=
$t
.
'秒前'
;
// 一分钟内
break
;
case
$t
< 60 * 60:
$text
=
floor
(
$t
/ 60) .
'分钟前'
;
//一小时内
break
;
case
$t
< 60 * 60 * 24:
$text
=
floor
(
$t
/ (60 * 60)) .
'小时前'
;
// 一天内
break
;
case
$t
< 60 * 60 * 24 * 3:
$text
=
floor
(
$time
/(60*60*24)) ==1 ?
'昨天 '
.
date
(
'H:i'
,
$time
) :
'前天 '
.
date
(
'H:i'
,
$time
) ;
//昨天和前天
break
;
case
$t
< 60 * 60 * 24 * 30:
$text
=
date
(
'm月d日 H:i'
,
$time
);
//一个月内
break
;
case
$t
< 60 * 60 * 24 * 365&&
$y
==0:
$text
=
date
(
'm月d日'
,
$time
);
//一年内
break
;
default
:
$text
=
date
(
'Y年m月d日'
,
$time
);
//一年以前
break
;
}
return
$text
;
}
|
ThinkPHP中:
将写好的函数放到 Common 文件夹下。系统会自动加载的。
放到这个common.php页里,common.php 固有格式,不要改名。
模板中直接调用
1
|
{
$vo
.time|mdate}
|
例2,简单一些的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function
formatDate(
$sTime
) {
//sTime=源时间,cTime=当前时间,dTime=时间差
$cTime
= time();
$dTime
=
$cTime
-
$sTime
;
$dDay
=
intval
(
date
(
"Ymd"
,
$cTime
)) -
intval
(
date
(
"Ymd"
,
$sTime
));
$dYear
=
intval
(
date
(
"Y"
,
$cTime
)) -
intval
(
date
(
"Y"
,
$sTime
));
if
(
$dTime
< 60 ){
$dTime
=
$dTime
.
"秒前"
;
}
elseif
(
$dTime
< 3600 ){
$dTime
=
intval
(
$dTime
/60).
"分钟前"
;
}
elseif
(
$dTime
>= 3600 &&
$dDay
== 0 ){
$dTime
=
"今天"
.
date
(
"H:i"
,
$sTime
);
}
elseif
(
$dYear
==0){
$dTime
=
date
(
"m-d H:i"
,
$sTime
);
}
else
{
$dTime
=
date
(
"Y-m-d H:i"
,
$sTime
);
}
return
$dTime
;
}
|
下面发一个友好时间的方法给大家
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
/**
* 友好时间显示
* @param $time
* @return bool|string
*/
function
friend_date(
$time
)
{
if
(!
$time
)
return
false;
$fdate
=
''
;
$d
= time() -
intval
(
$time
);
$ld
=
$time
-
mktime
(0, 0, 0, 0, 0,
date
(
'Y'
));
//得出年
$md
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
), 0,
date
(
'Y'
));
//得出月
$byd
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
),
date
(
'd'
) - 2,
date
(
'Y'
));
//前天
$yd
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
),
date
(
'd'
) - 1,
date
(
'Y'
));
//昨天
$dd
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
),
date
(
'd'
),
date
(
'Y'
));
//今天
$td
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
),
date
(
'd'
) + 1,
date
(
'Y'
));
//明天
$atd
=
$time
-
mktime
(0, 0, 0,
date
(
'm'
),
date
(
'd'
) + 2,
date
(
'Y'
));
//后天
if
(
$d
== 0) {
$fdate
=
'刚刚'
;
}
else
{
switch
(
$d
) {
case
$d
<
$atd
:
$fdate
=
date
(
'Y年m月d日'
,
$time
);
break
;
case
$d
<
$td
:
$fdate
=
'后天'
.
date
(
'H:i'
,
$time
);
break
;
case
$d
< 0:
$fdate
=
'明天'
.
date
(
'H:i'
,
$time
);
break
;
case
$d
< 60:
$fdate
=
$d
.
'秒前'
;
break
;
case
$d
< 3600:
$fdate
=
floor
(
$d
/ 60) .
'分钟前'
;
break
;
case
$d
<
$dd
:
$fdate
=
floor
(
$d
/ 3600) .
'小时前'
;
break
;
case
$d
<
$yd
:
$fdate
=
'昨天'
.
date
(
'H:i'
,
$time
);
break
;
case
$d
<
$byd
:
$fdate
=
'前天'
.
date
(
'H:i'
,
$time
);
break
;
case
$d
<
$md
:
$fdate
=
date
(
'm月d日 H:i'
,
$time
);
break
;
case
$d
<
$ld
:
$fdate
=
date
(
'm月d日'
,
$time
);
break
;
default
:
$fdate
=
date
(
'Y年m月d日'
,
$time
);
break
;
}
}
return
$fdate
;
}
|
引用:http://www.cnblogs.com/lhm166/articles/6066762.html