59177427 |
1 | <?php |
3302d0d4 |
2 | /** |
a09387f4 |
3 | ** date.php |
3302d0d4 |
4 | ** |
5 | ** Takes a date and parses it into a usable format. The form that a |
6 | ** date SHOULD arrive in is: |
5b10f02a |
7 | ** <Tue,> 29 Jun 1999 09:52:11 -0500 (EDT) |
8 | ** (as specified in RFC 822) -- "Tue" is optional |
3302d0d4 |
9 | ** |
10 | **/ |
11 | |
d068c0ec |
12 | $date_php = true; |
13 | |
aceb0d5c |
14 | function getMinutes($hour) { |
15 | $date = $hour; |
16 | |
17 | if (($hour == 0) || ($hour == "00")) |
18 | $date = "00"; |
19 | else if (($hour == 1) || ($hour == "01")) |
20 | $date = "01"; |
21 | else if (($hour == 2) || ($hour == "02")) |
22 | $date = "02"; |
23 | else if (($hour == 3) || ($hour == "03")) |
24 | $date = "03"; |
25 | else if (($hour == 4) || ($hour == "04")) |
26 | $date = "04"; |
27 | else if (($hour == 5) || ($hour == "05")) |
28 | $date = "05"; |
29 | else if (($hour == 6) || ($hour == "06")) |
30 | $date = "06"; |
31 | else if (($hour == 7) || ($hour == "07")) |
32 | $date = "07"; |
33 | else if (($hour == 8) || ($hour == "08")) |
34 | $date = "08"; |
35 | else if (($hour == 9) || ($hour == "09")) |
36 | $date = "09"; |
37 | |
38 | return $date; |
39 | } |
40 | |
0f1835f3 |
41 | // corrects a time stamp to be the local time |
42 | function getGMTSeconds($stamp, $gmt) { |
e5b4c610 |
43 | if (($gmt == "Pacific") || ($gmt == "PST")) |
ddd32bad |
44 | $gmt = "-0800"; |
e5b4c610 |
45 | else if (($gmt == "EDT")) |
46 | $gmt = "-0400"; |
47 | else if (($gmt == "Eastern") || ($gmt == "EST") || ($gmt == "CDT")) |
ddd32bad |
48 | $gmt = "-0500"; |
e5b4c610 |
49 | else if (($gmt == "Central") || ($gmt == "CST") || ($gmt == "MDT")) |
ddd32bad |
50 | $gmt = "-0600"; |
e5b4c610 |
51 | else if (($gmt == "Mountain") || ($gmt == "MST") || ($gmt == "PDT")) |
ddd32bad |
52 | $gmt = "-0700"; |
e5b4c610 |
53 | else if ($gmt == "BST") |
54 | $gmt = "+0100"; |
55 | else if ($gmt == "EET") |
56 | $gmt = "+0200"; |
57 | else if ($gmt == "GMT") |
58 | $gmt = "+0000"; |
59 | else if ($gmt == "HKT") |
60 | $gmt = "+0800"; |
61 | else if ($gmt == "IST") |
62 | $gmt = "+0200"; |
63 | else if ($gmt == "JST") |
64 | $gmt = "+0900"; |
65 | else if ($gmt == "MET") |
66 | $gmt = "+0100"; |
67 | else if ($gmt == "MET DST" || $gmt == "METDST") |
68 | $gmt = "+0200"; |
ddd32bad |
69 | |
0f1835f3 |
70 | if (substr($gmt, 0, 1) == "-") { |
71 | $neg = true; |
72 | $gmt = substr($gmt, 1, strlen($gmt)); |
73 | } else if (substr($gmt, 0, 1) == "+") { |
74 | $neg = false; |
75 | $gmt = substr($gmt, 1, strlen($gmt)); |
76 | } else |
77 | $neg = false; |
78 | |
79 | $gmt = substr($gmt, 0, 2); |
80 | $gmt = $gmt * 3600; |
81 | if ($neg == true) |
82 | $gmt = "-$gmt"; |
83 | else |
84 | $gmt = "+$gmt"; |
85 | |
86 | /** now find what the server is at **/ |
87 | $current = date("Z", time()); |
88 | |
89 | $stamp = (int)$stamp - (int)$gmt + (int)$current; |
90 | |
91 | return $stamp; |
92 | } |
93 | |
3302d0d4 |
94 | function getHour($hour) { |
95 | $time = explode(":", $hour); |
96 | return $time[0]; |
97 | } |
98 | |
99 | function getMinute($min) { |
100 | $time = explode(":", $min); |
101 | return $time[1]; |
102 | } |
103 | |
104 | function getSecond($sec) { |
105 | $time = explode(":", $sec); |
106 | return $time[2]; |
107 | } |
108 | |
109 | function getMonthNum($month) { |
110 | if (eregi("jan|january", $month, $tmp)) |
111 | $date = "01"; |
112 | else if (eregi("feb|february|febuary", $month, $tmp)) |
113 | $date = "02"; |
114 | else if (eregi("mar|march", $month, $tmp)) |
115 | $date = "03"; |
116 | else if (eregi("apr|april", $month, $tmp)) |
117 | $date = "04"; |
118 | else if (eregi("may", $month, $tmp)) |
119 | $date = "05"; |
120 | else if (eregi("jun|june", $month, $tmp)) |
121 | $date = "06"; |
122 | else if (eregi("jul|july", $month, $tmp)) |
123 | $date = "07"; |
124 | else if (eregi("aug|august", $month, $tmp)) |
125 | $date = "08"; |
126 | else if (eregi("sep|sept|september", $month, $tmp)) |
127 | $date = "09"; |
128 | else if (eregi("oct|october", $month, $tmp)) |
129 | $date = "10"; |
130 | else if (eregi("nov|november", $month, $tmp)) |
131 | $date = "11"; |
132 | else if (eregi("dec|december", $month, $tmp)) |
133 | $date = "12"; |
134 | |
135 | return $date; |
136 | } |
137 | |
138 | function getDayOfWeek($day) { |
139 | $date = "{WEEKDAY}"; |
140 | |
141 | if (eregi("(mon|monday)", $day, $tmp)) |
142 | $date = "Mon"; |
143 | else if (eregi("(tue|tuesday)", $day, $tmp)) |
144 | $date = "Tue"; |
145 | else if (eregi("(wed|wednesday)", $day, $tmp)) |
146 | $date = "Wed"; |
147 | else if (eregi("(thurs|thu|thursday)", $day, $tmp)) |
148 | $date = "Thu"; |
149 | else if (eregi("(fri|friday)", $day, $tmp)) |
150 | $date = "Fri"; |
151 | else if (eregi("(sat|saturday)", $day, $tmp)) |
152 | $date = "Sat"; |
153 | else if (eregi("(sun|sunday)", $day, $tmp)) |
154 | $date = "Sun"; |
155 | |
156 | return $date; |
157 | } |
158 | |
159 | function getDayOfMonth($day) { |
160 | return ereg_replace("^0", "", $day); /* remove a preceeding 0 */ |
161 | } |
162 | |
163 | function getMonth($month) { |
164 | $date = "{MONTH}"; |
165 | if (eregi("jan|january", $month, $tmp)) |
166 | $date = "Jan"; |
167 | else if (eregi("feb|february|febuary", $month, $tmp)) |
168 | $date = "Feb"; |
169 | else if (eregi("mar|march", $month, $tmp)) |
170 | $date = "Mar"; |
171 | else if (eregi("apr|april", $month, $tmp)) |
172 | $date = "Apr"; |
173 | else if (eregi("may", $month, $tmp)) |
174 | $date = "May"; |
175 | else if (eregi("jun|june", $month, $tmp)) |
176 | $date = "Jun"; |
177 | else if (eregi("jul|july", $month, $tmp)) |
178 | $date = "Jul"; |
179 | else if (eregi("aug|august", $month, $tmp)) |
180 | $date = "Aug"; |
181 | else if (eregi("sep|sept|september", $month, $tmp)) |
182 | $date = "Sep"; |
183 | else if (eregi("oct|october", $month, $tmp)) |
184 | $date = "Oct"; |
185 | else if (eregi("nov|november", $month, $tmp)) |
186 | $date = "Nov"; |
187 | else if (eregi("dec|december", $month, $tmp)) |
188 | $date = "Dec"; |
189 | |
190 | return $date; |
191 | } |
192 | |
193 | function getYear($year) { |
194 | return $year; |
195 | } |
196 | |
0f1835f3 |
197 | function getLongDateString($stamp) { |
198 | return date("D, F j, Y g:i a", $stamp); |
199 | } |
200 | |
201 | function getDateString($stamp) { |
d68a3926 |
202 | $now = time(); |
069b4374 |
203 | $midnight = $now - ($now % 86400) - date("Z", $now); |
d68a3926 |
204 | |
205 | if ($midnight < $stamp) { |
206 | // Today |
207 | return date("g:i a", $stamp); |
069b4374 |
208 | } else if ($midnight - (60 * 60 * 24 * 6) < $stamp) { |
d68a3926 |
209 | // This week |
210 | return date("D, g:i a", $stamp); |
211 | } else { |
212 | // before this week |
213 | return date("M j, Y", $stamp); |
214 | } |
0f1835f3 |
215 | } |
216 | |
217 | function getTimeStamp($dateParts) { |
3302d0d4 |
218 | /** $dateParts[0] == <day of week> Mon, Tue, Wed |
219 | ** $dateParts[1] == <day of month> 23 |
220 | ** $dateParts[2] == <month> Jan, Feb, Mar |
221 | ** $dateParts[3] == <year> 1999 |
222 | ** $dateParts[4] == <time> 18:54:23 (HH:MM:SS) |
223 | ** $dateParts[5] == <from GMT> +0100 |
224 | ** $dateParts[6] == <zone> (EDT) |
225 | ** |
226 | ** NOTE: In RFC 822, it states that <day of week> is optional. |
227 | ** In that case, dateParts[0] would be the <day of month> |
228 | ** and everything would be bumped up one. |
229 | **/ |
230 | |
d068c0ec |
231 | // Simply check to see if the first element in the dateParts |
232 | // array is an integer or not. |
5e90d34a |
233 | // Since the day of week is optional, this check is needed. |
234 | // |
d068c0ec |
235 | // The old code used eregi("mon|tue|wed|thu|fri|sat|sun", |
236 | // $dateParts[0], $tmp) to find if the first element was the |
237 | // day of week or day of month. This is an expensive call |
238 | // (processing time) to have inside a loop. Doing it this way |
239 | // saves quite a bit of time for large mailboxes. |
5e90d34a |
240 | // |
d068c0ec |
241 | // It is also quicker to call explode only once rather than |
242 | // the 3 times it was getting called by calling the functions |
243 | // getHour, getMinute, and getSecond. |
5e90d34a |
244 | // |
245 | if (intval(trim($dateParts[0])) > 0) { |
246 | $time = explode(":", $dateParts[3]); |
247 | $d[0] = $time[0]; |
248 | $d[1] = $time[1]; |
249 | $d[2] = $time[2]; |
250 | $d[3] = getMonthNum(trim($dateParts[1])); |
251 | $d[4] = getDayOfMonth(trim($dateParts[0])); |
252 | $d[5] = getYear(trim($dateParts[2])); |
253 | return getGMTSeconds(mktime($d[0], $d[1], $d[2], $d[3], $d[4], $d[5]), $dateParts[4]); |
5b10f02a |
254 | } |
5e90d34a |
255 | $time = explode(":", $dateParts[4]); |
256 | $d[0] = $time[0]; |
257 | $d[1] = $time[1]; |
258 | $d[2] = $time[2]; |
259 | $d[3] = getMonthNum(trim($dateParts[2])); |
260 | $d[4] = getDayOfMonth(trim($dateParts[1])); |
261 | $d[5] = getYear(trim($dateParts[3])); |
262 | return getGMTSeconds(mktime($d[0], $d[1], $d[2], $d[3], $d[4], $d[5]), $dateParts[5]); |
263 | } |
264 | |
d068c0ec |
265 | // I use this function for profiling. Should never be called in |
266 | // actual versions of squirrelmail released to public. |
5e90d34a |
267 | function getmicrotime() { |
268 | $mtime = microtime(); |
269 | $mtime = explode(" ",$mtime); |
270 | $mtime = $mtime[1] + $mtime[0]; |
271 | return ($mtime); |
9774bdef |
272 | } |
3302d0d4 |
273 | ?> |