php – – datei() – Funkce zobrazující datum po roce 2038
Rozpracováno, ale tak nějak funguje 🙂
<?php
function datei(){
$format = „d.m.Y H:i:s“;
$cas = time();
$chyba = „“;
$test_datum = „/^[12]{1}\d{3}-[01]{1}\d{1}-[0-3]{1}\d{1}/“;
$test_cas = „/[012]{1}\d{1}:[0-5]{1}\d{1}:[0-5]{1}\d{1}$/“;
$test_datum_cas = „/^[12]{1}\d{3}-[01]{1}\d{1}-[0-3]{1}\d{1} [012]{1}\d{1}:[0-5]{1}\d{1}:[0-5]{1}\d{1}$/“;
$test_format = „/^[\-\ \,\.\:YymndjHGis]*$/“;
if (func_num_args() == 1) {
if (preg_match($test_datum, func_get_arg(0)) or preg_match($test_cas, func_get_arg(0)) or preg_match($test_datum_cas, func_get_arg(0))) {
$cas = func_get_arg(0);
}
elseif (preg_match($test_format, func_get_arg(0))) {
$format = func_get_arg(0);
}
else $chyba .= „<span style=’color: red; font-weight: normal;‘>Upozorneni: datei(): Byla predan pouze jeden parametr, ktery neodpovida formatu nebo formatovani datumu a casu! </span>“;
}
if (func_num_args() > 1) {
$parametr = func_get_args();
for ($i = 0; $i < func_num_args(); $i++) {
if ($i == 0 and strlen($parametr[$i]) > 0) {
if (preg_match($test_format, $parametr[$i])) {
$format = $parametr[$i];
}
else $chyba .= „<span style=’color: red; font-weight: normal;‘>Upozorneni: datei(): Formatovani datumu a casu obsahuje nedovolene znaky! </span>“;
}
if ($i == 1 and strlen($parametr[$i]) > 0) {
$cas = $parametr[$i];
if (is_numeric($cas)) $cas = date(„Y-m-d H:i:s“, $cas);
if (preg_match($test_datum, $cas) or preg_match($test_cas, $cas) or preg_match($test_datum_cas, $cas)) {
$cas_test = true;
}
else $chyba .= „<span style=’color: red; font-weight: normal;‘>Upozorneni: datei(): Format datumu a casu musi byt ‚2014-11-12 18:30:00‘! </span>“;
}
if ($i == 1 and strlen($parametr[$i]) == 0) $chyba .= „<span style=’color: red; font-weight: normal;‘>Upozorneni: datei(): Datum a cas nebyly korektne zpracovany, je zobrazen aktualni datum a cas! </span>“;
}
}
if (is_numeric($cas)) $cas = date(„Y-m-d H:i:s“, $cas);
$cas_format = new DateTime($cas);
if (strlen($chyba) > 0) return $chyba;
else return $cas_format->format($format);
}
?>