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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
| /*
*将文字表述的时间 转化为相应的时间
*/
function changToDateTime($str)
{
$str=trim($str);
$res=array();
//如果本身是时间格式
if(preg_match("/(\d{4}-\d{1,2}-\d{1,2})\s(\d{1,2}:\d{1,2}:\d{1,2})/",$str)){
$res=explode(" ",$str);
$res[2]=$str;
}elseif(preg_match('/(\d{4})年(\d{1,2})月(\d{1,2})日\s(\d{1,2}:\d{1,2})/',$str,$match)){
$res[0]=$match[1].'-'.$match[2].'-'.$match[3];
$res[1]=$match[4].':00';
$res[2]=$res[0].' '.$res[1];
}elseif(preg_match('/(\d{1,2})月(\d{1,2})日\s(\d{1,2}:\d{1,2})/',$str,$match)){
$res[0]=date("Y").'-'.$match[1].'-'.$match[2];
$res[1]=$match[3].':00';
$res[2]=$res[0].' '.$res[1];
}elseif(preg_match('/(\d{4})\s*年(\d{1,2})\s*月(\d{1,2})\s*日/',$str,$match)){
//只有日期数据的格式
$res[0]=$match[1].'-'.$match[2].'-'.$match[3];
$res[1]='00:00:00';
$res[2]=$res[0].' '.$res[1];
}elseif(preg_match("/(\d+)\s*秒前/",$str,$match)){
$dateTime=time()-$match[1];
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match("/(\d+)\s*分钟前/",$str,$match)){//如果是分钟格式 如:3分钟前
$dateTime=time()-$match[1]*60;
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match("/(\d+)\s*小时前/",$str,$match)){//如果是小时格式
$dateTime=time()-$match[1]*3600;
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match("/(\d+)\s*天前/",$str,$match)){
$dateTime=time()-$match[1]*3600*24;
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match("/(\d+)\s*[h|H]ours/",$str,$match)){
//英文版本的多少个小时以前
$dateTime=time()-$match[1]*60;
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match("/([a-zA-Z])+\s+(\d{1,2}):(\d{1,2}:\d{1,2})\s+[A|P]M/",$str,$match)){
//英文版本带昨天 之类 的说明
if($match[1]=='Yesterday'){
$res[0]=date("Y-m-d",time()-86400);
}else{
$res[0]=date("Y-m-d"); //默认设置为今天 会出错!!根据 实际 情况 完善
}
//如果 是下等,时间要加12个小时
if($match[4]=='PM'){
$match[2]=intval($match[2]); //应该是去年前面 的0! 待改
$match[2]+=12;
}
$res[1]=$match[2].":".$match[3];
$res[2]=$res[0]." ".$res[1];
}elseif(preg_match("/\d{1,2}\/\d{1,2}\/10/",$str,$match)){
$res[0]="2010-".$match[1]."-".$match[2];
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}elseif(preg_match('/(\d+)\s*[M|m]inutes/',$str,$match)){
$dateTime=time()-$match[1]*60;
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/前天 (\d{1,2}:\d{1,2})/',$str,$match)){
$dateTime=time()-24*60*60*2;
$dateTime=date("Y-m-d",$dateTime).' '.$match[1].':00';
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/昨天 (\d{1,2}:\d{1,2})/',$str,$match)){
$dateTime=time()-24*60*60;
$dateTime=date("Y-m-d",$dateTime).' '.$match[1].':00';
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/今天 (\d{1,2}:\d{1,2})/',$str,$match)){
$dateTime=date("Y-m-d").' '.$match[1].':00';
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/(\d{1,2}-\d{1,2}) (\d{1,2}:\d{1,2})/',$str,$match)){
$dateTime=date("Y").'-'.$match[1].' '.$match[2].':00';
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/(\d{2,4}-\d{1,2}-\d{1,2}) (\d{1,2}:\d{1,2})/',$str,$match)){
$dateTime=$match[1].' '.$match[2].':00';
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/(\d+)\s*Seconds/',$str,$match)){
$dateTime=time()-$match[1];
$dateTime=date("Y-m-d H:i:s",$dateTime);
$res=explode(" ",$dateTime);
$res[2]=$dateTime;
}elseif(preg_match('/([a-zA-Z]+)\s+(\d+).*?(\d{4})/',$str,$match)){
//格式:Mar 1,2010
$m=$this->monthSimple($match[1]);
$res[0]=$match[3].'-'.$m.'-'.$match[2];
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}elseif($str=='今天'){
$res[0]=date("Y-m-d");
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}elseif($str=='昨天') {
$dateTime=time()-86400;
$res[0]=date("Y-m-d",$dateTime);
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}elseif($str=='前天'){
$res[0]=date("Y-m-d",(time()-86400*2));
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}elseif($str=='刚刚'){
$res[0]=date("Y-m-d");
$res[1]=date("H:i:s");
$res[2]=$res[0]." ".$res[1];
}else{
$res[0]="0000-00-00";
$res[1]="00:00:00";
$res[2]=$res[0]." ".$res[1];
}
return $res;
} |
Recent Comments