文章显示的优化

来源:互联网 发布:打字赚钱软件推荐 编辑:程序博客网 时间:2024/05/19 04:52
这是关于用php显示文章 几分钟前,几小时前,几天前发表展示的形式,文章发表时的UNIX时间戳,来转化为例如 几分钟前,几小时前,几天前 这样的提示。如微博

这看起来更加人性化1 <?php
2 class timeAgo
3 {
4 static $timeagoObject;
5 private $rustle;
6 private $unit;
7
8 private function __construct()
9 {
10
11 }
12 private function __clone(){ }
13 public static function getObject()
14 {
15 if(! (self::$timeagoObject instanceof self) )
16 self::$timeagoObject = new timeAgo();
17
18 return self::$timeagoObject;
19 }
20 private function count_int($unix_C) // main function
21 {
22 if(! (isset($unix_C) || is_numeric($unix_C)) )
23 return 'don't find parameter';
24
25 $d = time()-$unix_C ; // $d - unix time difference value
26 $d_int =(int)floor($d/60) ; // minimum unit -- minutes unix/60
27
28 $this->unit = 0 ; // is minutes,hour or day?
29
30 if($d_int < 60){ // minutes in one hour 3600
31 $this->rustle = $d_int;
32 $this->unit = 1;
33 }
34 else if($d_int < 720){ //hour in one day 3600*12
35 $this->rustle = floor($d_int/60);
36 $this->unit = 2 ;
37 }
38 else if($d_int < 7200){ //day in ten days 3600*12*10
39 $this->rustle = floor($d_int/720);
40 $this->unit = 3 ;
41 }
42 else{
43 $this->rustle = $d ;
44 $this->unit = 4 ;
45 }
46 }
47 public function piece_str($C)
48 {
49 $this->count_int($C);
50
51 $u = '';
52 switch( $this->unit )
53 {
54 case 1:
55 $u = 'minute';
56 break;
57 case 2:
58 $u = 'hour';
59 break;
60 case 3:
61 $u = 'day';
62 break;
63 case 4:
64 $u = '';
65 break;
66 case 0:
67 return 'sorry , get time is fail';
68 }
69 if($this->unit < 4)
70 {
71 if($this->rustle > 1)
72 return (string)$this->rustle.$u.'s ago';
73 else if($this->rustle == 1)
74 return (string)$this->rustle.$u.'ago';
75 else
76 return 'Just now';
77 }
78 }
79 /* example: $ago = timeAgo::getObject();
80 * echo $ago->piece_str($unix);
81 * // 2 days ago
82 */
83 }
84 ?>