php – – datei() – Funkce zobrazující datum po roce 2038

Od posmura

 

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);
}

?>