date.php 7.5 KB

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