Kod:
<?
// THIS CLASS CONTAINS DATE/TIME-RELATED METHODS.
// IT IS USED TO FORMAT TIMESTAMPS
// METHODS IN THIS CLASS:
// cdate()
// untimezone()
// timezone()
// time_since()
// age()
class se_datetime {
// INITIALIZE VARIABLES
var $is_error; // DETERMINES WHETHER THERE IS AN ERROR OR NOT
// THIS METHOD SETS INITIAL VARS SUCH AS PRELOADING LANG VARS
// INPUT:
// OUTPUT:
function se_datetime() {
SE_Language::_preload_multi(773, 774, 775, 776, 777, 778, 779);
} // END se_datetime() METHOD
// THIS METHOD RETURNS A FORMATTED DATE (MULTILANGUAGE)
// INPUT: $format REPRESENTING A DATE FORMAT BASED ON THE PHP DATE() FUNCTION FORMAT
// $time (OPTIONAL) REPRESENTING A TIMESTAMP
// OUTPUT: A STRING REPRESENTING A FORMATTED DATE BASED ON THE GIVEN TIMESTAMP
function cdate($format, $time = "") {
$langdate = array (
'January' => "января",
'February' => "февраля",
'March' => "марта",
'April' => "апреля",
'May' => "мая",
'June' => "июня",
'July' => "июля",
'August' => "августа",
'September' => "сентября",
'October' => "октября",
'November' => "ноября",
'December' => "декабря",
'Jan' => "янв",
'Feb' => "фев",
'Mar' => "мар",
'Apr' => "апр",
'May' => "мая",
'Jun' => "июн",
'Jul' => "июл",
'Aug' => "авг",
'Sep' => "сен",
'Oct' => "окт",
'Nov' => "ноя",
'Dec' => "дек",
'Sunday' => "Воскресенье",
'Monday' => "Понедельник",
'Tuesday' => "Вторник",
'Wednesday' => "Среда",
'Thursday' => "Четверг",
'Friday' => "Пятница",
'Saturday' => "Суббота",
'Sun' => "Вс",
'Mon' => "Пн",
'Tue' => "Вт",
'Wed' => "Ср",
'Thu' => "Чт",
'Fri' => "Пт",
'Sat' => "Сб",
);
if($time == "") { $time = time(); }
$date = strtr(date($format, $time), $langdate);
if(($format == "F")||($format == "f")||($format == "Y")||($format == "M")||($format == "j")||($format == "m")||($format == "J")||($format == "n")||($format == "d")||($format == "N")||($format == "D")) {
$f = array('января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря');
$r = array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');
$langdateshortweekdays = array("Вс","Пн","Вт","Ср","Чт","Пт","Сб");
$date = str_replace($f, $r, $date);
}
return $date;
} // END cdate() METHOD
function ru_monf($m) {
$langdate = array (
'January' => "Январь",
'February' => "Февраль",
'March' => "Март",
'April' => "Апрель",
'May' => "Май",
'June' => "Июняь",
'July' => "Июль",
'August' => "Август",
'September' => "Сентябрь",
'October' => "Октябрь",
'November' => "Ноябрь",
'December' => "Декабрь"
);
$date = strtr($m, $langdate);
return $date;
} // END ru_monf() METHOD
// THIS METHOD RETURNS A TIMESTAMP IN THE SERVER TIMEZONE
// INPUT: $time REPRESENTING A TIMESTAMP IN USER'S TIME
// $timezone REPRESENTING A TIMEZONE
// OUTPUT: A TIMESTAMP IN THE SERVER TIMEZONE
function untimezone($time, $timezone) {
switch($timezone) {
case -12: $new_time = $time + 43200; break;
case -11: $new_time = $time + 39600; break;
case -10: $new_time = $time + 33000; break;
case -9: $new_time = $time + 32400; break;
case -8: $new_time = $time + 28800; break;
case -7: $new_time = $time + 25200; break;
case -6: $new_time = $time + 21600; break;
case -5: $new_time = $time + 18000; break;
case -4: $new_time = $time + 14400; break;
case -3.3: $new_time = $time + 11880; break;
case -3: $new_time = $time + 10800; break;
case -2: $new_time = $time + 7200; break;
case -1: $new_time = $time + 3600; break;
case 0: $new_time = $time; break;
case 1: $new_time = $time - 3600; break;
case 2: $new_time = $time - 7200; break;
case 3: $new_time = $time - 10800; break;
case 3.3: $new_time = $time - 11880; break;
case 4: $new_time = $time - 14400; break;
case 4.3: $new_time = $time - 15480; break;
case 5: $new_time = $time - 18000; break;
case 5.5: $new_time = $time - 19800; break;
case 6: $new_time = $time - 21600; break;
case 7: $new_time = $time - 25200; break;
case 8: $new_time = $time - 28800; break;
case 9: $new_time = $time - 32400; break;
case 9.3: $new_time = $time - 33480; break;
case 10: $new_time = $time - 33000; break;
case 11: $new_time = $time - 39600; break;
case 12: $new_time = $time - 43200; break;
}
$new_time = $new_time+(date("Z")-(date("I")*3600));
return $new_time;
} // END untimezone() METHOD
// THIS METHOD RETURNS A TIMESTAMP IN THE CORRECT TIMEZONE
// INPUT: $time REPRESENTING A TIMESTAMP IN SERVER TIME
// $timezone REPRESENTING A TIMEZONE
// OUTPUT: A TIMESTAMP IN THE CORRECT TIMEZONE
function timezone($time, $timezone) {
$time = $time-(date("Z")-(date("I")*3600));
switch($timezone) {
case -12: $new_time = $time - 43200; break;
case -11: $new_time = $time - 39600; break;
case -10: $new_time = $time - 33000; break;
case -9: $new_time = $time - 32400; break;
case -8: $new_time = $time - 28800; break;
case -7: $new_time = $time - 25200; break;
case -6: $new_time = $time - 21600; break;
case -5: $new_time = $time - 18000; break;
case -4: $new_time = $time - 14400; break;
case -3.3: $new_time = $time - 11880; break;
case -3: $new_time = $time - 10800; break;
case -2: $new_time = $time - 7200; break;
case -1: $new_time = $time - 3600; break;
case 0: $new_time = $time; break;
case 1: $new_time = $time + 3600; break;
case 2: $new_time = $time + 7200; break;
case 3: $new_time = $time + 10800; break;
case 3.3: $new_time = $time + 11880; break;
case 4: $new_time = $time + 14400; break;
case 4.3: $new_time = $time + 15480; break;
case 5: $new_time = $time + 18000; break;
case 5.5: $new_time = $time + 19800; break;
case 6: $new_time = $time + 21600; break;
case 7: $new_time = $time + 25200; break;
case 8: $new_time = $time + 28800; break;
case 9: $new_time = $time + 32400; break;
case 9.3: $new_time = $time + 33480; break;
case 10: $new_time = $time + 33000; break;
case 11: $new_time = $time + 39600; break;
case 12: $new_time = $time + 43200; break;
}
return $new_time;
} // END timezone() METHOD
// THIS METHOD RETURNS A STRING SPECIFYING THE TIME SINCE THE SPECIFIED TIMESTAMP
// INPUT: $time REPRESENTING A TIMESTAMP
// OUTPUT: A STRING SPECIFYING THE TIME SINCE THE SPECIFIED TIMESTAMP
function time_since($time) {
$now = time();
$now_day = date("j", $now);
$now_month = date("n", $now);
$now_year = date("Y", $now);
$time_day = date("j", $time);
$time_month = date("n", $time);
$time_year = date("Y", $time);
$time_since = "";
$lang_var = 0;
switch(TRUE) {
case ($now-$time < 60):
// RETURNS SECONDS
$seconds = $now-$time;
$time_since = $seconds;
$lang_var = 773;
break;
case ($now-$time < 3600):
// RETURNS MINUTES
$minutes = round(($now-$time)/60);
$time_since = $minutes;
$lang_var = 774;
break;
case ($now-$time < 86400):
// RETURNS HOURS
$hours = round(($now-$time)/3600);
$time_since = $hours;
$lang_var = 775;
break;
case ($now-$time < 1209600):
// RETURNS DAYS
$days = round(($now-$time)/86400);
$time_since = $days;
$lang_var = 776;
break;
case (mktime(0, 0, 0, $now_month-1, $now_day, $now_year) < mktime(0, 0, 0, $time_month, $time_day, $time_year)):
// RETURNS WEEKS
$weeks = round(($now-$time)/604800);
$time_since = $weeks;
$lang_var = 777;
break;
case (mktime(0, 0, 0, $now_month, $now_day, $now_year-1) < mktime(0, 0, 0, $time_month, $time_day, $time_year)):
// RETURNS MONTHS
if($now_year == $time_year) { $subtract = 0; } else { $subtract = 12; }
$months = round($now_month-$time_month+$subtract);
$time_since = $months;
$lang_var = 778;
break;
default:
// RETURNS YEARS
if($now_month < $time_month) {
$subtract = 1;
} elseif($now_month == $time_month) {
if($now_day < $time_day) { $subtract = 1; } else { $subtract = 0; }
} else {
$subtract = 0;
}
$years = $now_year-$time_year-$subtract;
$time_since = $years;
$lang_var = 779;
if($years == 0) { $time_since = ""; $lang_var = 0; }
break;
}
return Array($lang_var, $time_since);
} // END time_since() METHOD
// THIS METHOD RETURNS AN AGE BASED ON A GIVEN MYSQL DATE
// INPUT: $time REPRESENTING A MYSQL-FORMAT DATE (YYYY-MM-DD)
// OUTPUT: AN INTEGER REPRESENTING AN AGE BASED ON THE DATE
function age($time) {
$now = time();
$now_day = date("d", $now);
$now_month = date("m", $now);
$now_year = date("Y", $now);
$time_day = substr($time, 8, 2);
$time_month = substr($time, 5, 2);
$time_year = substr($time, 0, 4);
// RETURNS YEARS
if($now_month < $time_month) {
$subtract = 1;
} elseif($now_month == $time_month) {
if($now_day < $time_day) {
$subtract = 1;
} else {
$subtract = 0;
}
} else {
$subtract = 0;
}
$years = $now_year-$time_year-$subtract;
return $years;
} // END age() METHOD
}
?>