Show date.php syntax highlighted
<?php
/**
* Additional Date/Time methods for better support of date/time handling.
*/
class Date {
const WITHOUT_TIME = 1;
const DATEFORMAT = 0;
const UNIXFORMAT = 1;
const HOUR = 3600;
const DAY = 86400;
const WEEK = 604800;
const MONTH = 2419200;
const YEAR = 29030400;
private static $MONTH_JAN = 1;
private static $MONTH_FEB = 2;
private static $MONTH_MAR = 3;
private static $MONTH_APR = 4;
private static $MONTH_MAY = 5;
private static $MONTH_JUN = 6;
private static $MONTH_JUL = 7;
private static $MONTH_AUG = 8;
private static $MONTH_SEP = 9;
private static $MONTH_OCT = 10;
private static $MONTH_NOV = 11;
private static $MONTH_DEC = 12;
/** dateDiff() function
* returns Array of Int values for difference between two dates
* $date1 > $date2 --> positive integers are returned
* $date1 < $date2 --> negative integers are returned
*
* $split recognizes the following:
* 'yw' = splits up years, weeks and days (default)
* 'y' = splits up years and days
* 'w' = splits up weeks and days
* 'd' = total days
*
* examples:
* $dif1 = dateDiff() or dateDiff('yw')
* $dif2 = dateDiff('y')
* $dif3 = dateDiff('w')
* $dif4 = dateDiff('d')
*
* assuming dateDiff returned 853 days, the above
* examples would have a print_r output of:
* $dif1 == Array( [y] => 2 [w] => 17 [d] => 4 )
* $dif2 == Array( [y] => 2 [d] => 123 )
* $dif3 == Array( [w] => 121 [d] => 6 )
* $dif4 == Array( [d] => 847 )
*
* note: [h] (hours), [m] (minutes), [s] (seconds) are always returned as elements of the Array
*/
public static function dateDiff($dt1, $dt2, $split = 'd') {
$date1 = (strtotime($dt1) != -1) ? strtotime($dt1) : self :: iso2unix($dt1);
$date2 = (strtotime($dt2) != -1) ? strtotime($dt2) : self :: iso2unix($dt2);
$dif = self::unixDiff($date1, $date2, $split);
return $dif;
}
public static function unixDiff($dt1, $dt2, $split = 'd') {
$dtDiff = $dt1 - $dt2;
$totalDays = intval($dtDiff / (24 * 60 * 60));
$totalSecs = $dtDiff - ($totalDays * 24 * 60 * 60);
$dif['h'] = $h = intval($totalSecs / (60 * 60));
$dif['m'] = $m = intval(($totalSecs - ($h * 60 * 60)) / 60);
$dif['s'] = $totalSecs - ($h * 60 * 60) - ($m * 60);
// set up array as necessary
switch ($split) {
case 'yw' : # split years-weeks-days
$dif['y'] = $y = intval($totalDays / 365);
$dif['w'] = $w = intval(($totalDays - ($y * 365)) / 7);
$dif['d'] = $totalDays - ($y * 365) - ($w * 7);
break;
case 'y' : # split years-days
$dif['y'] = $y = intval($totalDays / 365);
$dif['d'] = $totalDays - ($y * 365);
break;
case 'w' : # split weeks-days
$dif['w'] = $w = intval($totalDays / 7);
$dif['d'] = $totalDays - ($w * 7);
break;
case 'd' : # don't split -- total days
$dif['d'] = $totalDays;
break;
default :
die("Error in dateDiff(). Unrecognized \$split parameter. Valid values are 'yw', 'y', 'w', 'd'. Default is 'd'.");
}
return $dif;
}
public static function inPast($date) {
//DEPRECATED
return self :: isPast($date);
}
public static function isPast($date, $format = self :: DATEFORMAT) {
if ($format == self :: DATEFORMAT) {
if (self::iso2unix($date)<=0) {
return false;
}
$diff = self :: dateDiff($date, self :: NOW());
} else
if ($format == self :: UNIXFORMAT) {
if ($date<=0) {
return false;
}
$diff = self :: unixDiff($date, time());
} else {
return false;
}
foreach ($diff as $time) {
if ($time < 0)
return true;
}
return false;
}
public static function iso2unix($dstr) {
$i = preg_split("/[^0-9]/", $dstr);
if (sizeof($i) < 2)
return $dstr;
if (!isset ($i[4]))
$i[4] = 0;
if (!isset ($i[5]))
$i[5] = 0;
if (!isset ($i[6]))
$i[6] = 0;
return mktime($i[6], $i[5], $i[4], $i[1], $i[2], $i[0]);
}
/**
* Formats current date/time.
*
* This method returns a current timestamp in DATETIME format for MySQL
* database -> same as NOW() function in MySQL DB.
*/
public static function NOW($const = false) {
if ($const === false)
return date("Y-m-d H:i:s");
else
if ($const == self :: WITHOUT_TIME)
return date("Y-m-d");
}
public static function TIME() {
return time();
}
public static function ADD($timestamp1,$timestamp2) {
return (int)$timestamp1+(int)$timestamp2;
}
public static function format($timestamp) {
$timestamp = explode(" ", $timestamp);
$date = $timestamp[0];
if (isset ($timestamp[1]))
$time = $timestamp[1];
else
$time = "";
$date = explode("-", $date);
if (!empty ($date[2]) && !empty ($date[1]))
return $date[2].".".$date[1].".".$date[0]." ".$time;
else
return $date[0]." ".$time;
}
public static function fixDayLength($number) {
if (strlen((string) $number) == 1)
$number = "0".$number;
return $number;
}
public static function fixMonthLength($number) {
return self :: fixDayLength($number);
}
public static function Convert($date, $format, $glue = "-") {
$format = explode("-", $format);
$date = explode($glue, $date);
$day_pos = $month_pos = 0;
foreach ($format as $key => $object) {
if ($object == "month") {
$month_pos = $key;
} else
if ($object == "day") {
$day_pos = $key;
}
}
if (strlen($date[$month_pos]) == 2)
return $date;
$date[$month_pos] = self :: ${"MONTH_".strtoupper(substr($date[$month_pos], 0, 3))};
$date[$month_pos] = self :: fixMonthLength($date[$month_pos]);
$date[$day_pos] = self :: fixDayLength($date[$day_pos]);
$positions = array ();
foreach ($date as $key => $object) {
if ($format[$key] == "year")
$positions[0] = $object.$glue;
else
if ($format[$key] == "month")
$positions[1] = $object.$glue;
else
if ($format[$key] == "day")
$positions[2] = $object;
}
$retval = "";
for ($i = 0; $i < sizeof($positions); $i ++) {
$retval .= $positions[$i];
}
return $retval;
}
public static function Explode($date) {
$format = explode("-", "year-month-day");
$date = explode(" ", $date);
$date = explode("-", $date[0]);
$positions = array ();
foreach ($date as $key => $object) {
if ($format[$key] == "year")
$positions[$format[$key]] = (int) $object;
else
if ($format[$key] == "month")
$positions[$format[$key]] = (int) $object;
else
if ($format[$key] == "day")
$positions[$format[$key]] = (int) $object;
}
return $positions;
}
public static function localtime() {
$localtime = localtime(time(), true);
$object = new StdClass();
$object->seconds=$localtime['tm_sec'];
$object->minutes=$localtime['tm_min'];
$object->hours=$localtime['tm_hour'];
$object->month=$localtime['tm_mon']+1;
$object->year=$localtime['tm_year']+1900;
$object->day=$localtime['tm_mday'];
return $object;
}
public static function getDay() {
$days = array ('NedÄle', 'PondÄlÃ', 'Ãterý', 'StÅeda', 'Ätvrtek', 'Pátek', 'Sobota');
return $days[date('w')];
}
public static function getNameday() {
$_svatky = array ('Nový rok', 'Karina', 'Radmila', 'Diana', 'Dalimil', 'TÅi králové', 'Vilma', 'ÄestmÃr', 'Vladan', 'BÅetislav', 'Bohdana', 'Pravoslav', 'Edita', 'Radovan', 'Alice', 'Ctirad', 'Drahoslav', 'Vladislav', 'Doubravka', 'Ilona', 'BÄla', 'SlavomÃr', 'ZdenÄk', 'Milena', 'MiloÅ¡', 'Zora', 'Ingrid', 'Otýlie', 'Zdislava', 'Robin', 'Marika', 'Hynek', 'Nela', 'Blažej', 'Jarmila', 'Dobromila', 'Vanda', 'Veronika', 'Milada', 'Apolena', 'MojmÃr', 'Božena', 'SlavÄna', 'VÄnceslav', 'Valentýn', 'JiÅina', 'Ljuba', 'Miloslava', 'Gizela', 'Patrik', 'OldÅich', 'Lenka', 'Petr', 'Svatopluk', 'MatÄj', 'Liliana', 'Dorota', 'Alexandr', 'LumÃr', 'HorymÃr', /* 29. 2. !! */
'BedÅich', 'Anežka', 'Kamil', 'Stela', 'KazimÃr', 'Miroslav', 'Tomáš', 'Gabriela', 'FrantiÅ¡ka', 'Viktorie', 'AndÄla', 'ÅehoÅ', 'Růžena', 'Rút / Matylda', 'Ida', 'Elena/Herbert', 'Vlastimil', 'Eduard', 'Josef', 'SvÄtlana', 'Radek', 'Leona', 'Ivona', 'Gabriel', 'Marián', 'Emanuel', 'Dita', 'SoÅa', 'Taťána', 'ArnoÅ¡t', 'Kvido', 'Hugo', 'Erika', 'Richard', 'Ivana', 'Miroslava', 'Vendula', 'HeÅman / HermÃna', 'Ema', 'DuÅ¡an', 'Darja', 'Izabela', 'Julius', 'AleÅ¡', 'Vincenc', 'Anastázie', 'Irena', 'Rudolf', 'Valérie', 'Rostislav', 'Marcela', 'Alexandra', 'Evžénie', 'VojtÄch', 'JiÅÃ', 'Marek', 'Oto', 'Jaroslav', 'Vlastislav', 'Robert', 'Blahoslav', 'Svátek práce', 'Zikmund', 'Alexej', 'KvÄtoslav', 'Klaudie', 'Radoslav', 'Stanislav', 'Statnà svátek', 'Ctibor', 'Blažena', 'Svatava', 'Pankrác', 'Servác', 'Bonifác', 'Žofie', 'PÅemysl', 'Aneta', 'NataÅ¡a', 'Ivo', 'ZbyÅ¡ek', 'Monika', 'Emil', 'VladimÃr', 'Jana', 'Viola', 'Filip', 'Valdemar', 'Vilém', 'Maxim', 'Ferdinand', 'Kamila', 'Laura', 'Jarmil', 'Tamara', 'Dalibor', 'Dobroslav', 'Norbert', 'Iveta', 'Medard', 'Stanislava', 'Gita', 'Bruno', 'Antonie', 'AntonÃn', 'Roland', 'VÃt', 'ZbynÄk', 'Adolf', 'Milan', 'LeoÅ¡', 'KvÄta', 'Alois', 'Pavla', 'ZdeÅka', 'Jan', 'Ivan', 'Adriana', 'Ladislav', 'LubomÃr', 'Petr a Pavel', 'Šárka', 'Jaroslava', 'Patricie', 'RadomÃr', 'Prokop', 'Státnà svátek - Cyril a MetodÄj', 'Státnà svátek - Mistr Jan Hus', 'Bohuslava', 'Nora', 'Drahoslava', 'LibuÅ¡e / Amálie', 'Olga', 'BoÅek', 'Markéta', 'KarolÃna', 'JindÅich', 'LuboÅ¡', 'Martina', 'DrahomÃra', 'ÄenÄk', 'Ilja', 'VÃtÄzslav', 'Magdaléna', 'Libor', 'Kristýna', 'Jakub', 'Anna', 'VÄroslav', 'Viktor', 'Marta', 'BoÅivoj', 'Ignác', 'Oskar', 'Gustav', 'MiluÅ¡e', 'Dominik', 'Kristián', 'OldÅiÅ¡ka', 'Lada', 'SobÄslav', 'Roman', 'VavÅinec', 'Zuzana', 'Klára', 'Alena', 'Alan', 'Hana', 'Jáchym', 'Petra', 'Helena', 'LudvÃk', 'Bernard', 'Johana', 'Bohuslav', 'Sandra', 'BartolomÄj', 'Radim', 'LudÄk', 'Otakar', 'Augustýn', 'EvelÃna', 'VladÄna', 'PavlÃna', 'Linda / Samuel', 'Adéla', 'Bronislav', 'JindÅiÅ¡ka', 'Boris', 'Boleslav', 'RegÃna', 'Mariana', 'Daniela', 'Irma', 'Denisa', 'Marie', 'Lubor', 'Radka', 'Jolana', 'Ludmila', 'NadÄžda', 'KryÅ¡tof', 'Zita', 'Oleg', 'MatouÅ¡', 'Darina', 'Berta', 'JaromÃr', 'Zlata', 'Andrea', 'Jonáš', 'Václav', 'Michal', 'Jeroným', 'Igor', 'OlÃvie / Oliver', 'Bohumil', 'FrantiÅ¡ek', 'EliÅ¡ka', 'HanuÅ¡', 'Justýna', 'VÄra', 'Å tefan / Sára', 'Marina', 'Andrej', 'Marcel', 'Renáta', 'Agáta', 'Tereza', 'Havel', 'Hedvika', 'Lukáš', 'Michaela', 'VendelÃn', 'Brigita', 'Sabina', 'Teodor', 'Nina', 'Beáta', 'Erik', 'Å arlota / Zoe', 'Státnà svátek', 'Silvie', 'Tadeáš', 'Å tÄpánka', 'Felix', 'Památka zesnulých', 'Hubert', 'Karel', 'Miriam', 'LibÄna', 'Saskie', 'BohumÃr', 'Bohdan', 'Evžen', 'Martin', 'Benedikt', 'Tibor', 'Sáva', 'Leopold', 'Otmar', 'Mahulena', 'Romana', 'AlžbÄta', 'Nikola', 'Albert', 'CecÃlie', 'Klement', 'EmÃlie', 'KateÅina', 'Artur', 'Xenie', 'René', 'Zina', 'OndÅej', 'Iva', 'Blanka', 'Svatoslav', 'Barbora', 'Jitka', 'Mikuláš', 'Ambrož', 'KvÄtoslava', 'Vratislav', 'Julie', 'Dana', 'Simona', 'Lucie', 'Lýdie', 'Radana', 'AlbÃna', 'Daniel', 'Miloslav', 'Ester', 'Dagmar', 'Natálie', 'Å imon', 'Vlasta', 'Adam a Eva / Å tÄdrý den', '1.svátek vánoÄnÃ', 'Å tÄpán / 2.svátek vánoÄnÃ', 'Žaneta', 'Bohumila', 'Judita', 'David', 'Silvestr', 'Nový rok');
$d = getdate();
$yday = $d["yday"];
if (($yday > 58) && ((date("Y") % 4) != 0))
$yday ++; // Detekce prestupneho roku
$svatek_dnes = $_svatky[$yday];
return $svatek_dnes;
/*if (($yday == 58) && ((date("Y") % 4) != 0))
$yday ++; // Korektni vypis zitrejsiho svatku pri neprestupnem roku
$svatek_zitra = $svatky[$yday % 366 + 1];*/
}
public static function getDaytime() {
$hour = date('H');
if ($hour >= 20) return 'night';
else if ($hour >= 6) return 'day';
else if ($hour >= 0) return 'night';
}
}
?>
See more files for this project here