: : g_DATEFUNCTIONS

Různé užitečné funkce pro práci s datumy ve formátu YMDHIS. Tento formát používám i v DB (varchar(8) az varchar(14)):
select ID from TABULKA where DATUM like '20120520%' (vse ze dnesniho dne pri YmdHi)
select ID from TABULKA where DATUM >= '20120101' order by DATUM (vse tohoto roku pri Ymd)

YmdHis($timestamp=0) Vraci aktualni datum ve formatu YmdHis nebo z timestamp.

YmdHis() = '20120520223523'
YmdHis(YmdHinaTimeStamp(Date("Ymd"))) = '20120520223523'
CzDay($den) Vraci cislo dne dle ceskych pravidel, 1 = Po, 7 = Ne.

CzDay(Date("w")) = 7
UpravDatumNaYmdHis($YmdHis) Doplni datum od formatu Ymd na format YmdHis.

UpravDatumNaYmdHis(Date("Ymd")) = '20120520000000'
YmdHinaTimeStamp($YmdHi) Funkce převede od formátu Y do YmdHis na UNIX timestamp.

YmdHinaTimeStamp(Date("YmdHi")) = 1337546100
YmdHiDate($DateFmt,$YmdHi=0) Funkce převede od formátu Y do YmdHis na UNIX timestamp a zavolá Date s novým formátem.

YmdHiDate("j. n. Y",Date("YmdHi")) = '20. 5. 2012'
CzDay2CzDen($den) První dvě písmena z českého názvu pro den v týdnu dle českého počítání.

CzDay2CzDen(CzDay(Date("w"))) = 'Ne'
EnDay2CzDen($den) První dvě písmena z českého názvu pro den v týdnu dle anglického počítání.

EnDay2CzDen(Date("w")) = 'Ne'
YmdnaDenCZ($datum,$year=true,$dny=true) Převede formát Ymd na český ekvivalent.

YmdnaDenCZ(Date("Ymd"),True,True) = '20. května 2012'
YmdnaDenCZ(Date("Ymd"),False,True) = '20. května'
YmdnaCZ($rokmesden,$sk = 0) Měsíc z formátu Ymd česky.

YmdnaCZ(Date("Ymd"),0) = 'Květen'

Kód:
g_datefunctions.php
<? /* Datumove funkce */
$g_datefunctions_true = true;

function YmdHis($timestamp=0) {
  if (empty($timestamp)) 
    return Date("YmdHis");
  else 
    return Date("YmdHis",$timestamp);
}

function CzDay($den) {
  if ($den==0) return 7;
  else return $den;
}

function UpravDatumNaYmdHis($YmdHis) {
  switch (strlen($YmdHis)) {
    case 8: 
      return $YmdHis.'000000'; 
    break;
    case 12: 
      return $YmdHis.'00'; 
    break;
    default:
      return $YmdHis;
    break;
  }
}

function YmdHinaTimeStamp($YmdHi) {
  switch(strlen($YmdHi)) {
    case 14: 
      return strtotime(substr($YmdHi,0,4).'-'.substr($YmdHi,4,2).'-'.substr($YmdHi,6,2).' '.substr($YmdHi,8,2).':'.substr($YmdHi,10,2).':'.substr($YmdHi,12,2));
    break;
    case 12:
      return strtotime(substr($YmdHi,0,4).'-'.substr($YmdHi,4,2).'-'.substr($YmdHi,6,2).' '.substr($YmdHi,8,2).':'.substr($YmdHi,10,2).':00');
    break;
    case 8:
      return strtotime(substr($Ymd,0,4).'-'.substr($Ymd,4,2).'-'.substr($Ymd,6,2));
    break;
    case 6:
      return strtotime(substr($Ymd,0,4).'-'.substr($Ymd,4,2).'-01');
    break;
    case 4:
      return strtotime(substr($Ymd,0,4).'-01-01');
    break;
    default:
      return 0;
    break;
  }
}

function YmdHiDate($DateFmt,$YmdHi=0) {
  if (!empty($YmdHi)) 
    return Date($DateFmt,YmdHinaTimeStamp($YmdHi));
  else
    return Date($DateFmt);
}

function CzDay2CzDen($den) {
  switch($den) {
    case 1: return "Po"; break;
    case 2: return "Út"; break;
    case 3: return "St"; break;
    case 4: return "Čt"; break;
    case 5: return ""; break;
    case 6: return "So"; break;
    case 7: return "Ne"; break;
  }
}

function EnDay2CzDen($den) {
  return CzDay2CzDen(CzDay($den));
}

function YmdnaDenCZ($datum,$year=true,$dny=true) {
  return ($dny? (substr($datum,6,2)*1).'. '.YmdnaCZ($datum,1) : (substr($datum,4,2)*1).'.' )
         .($year ? ' '.substr($datum,0,4) : '');
}

function YmdnaCZ($rokmesden,$sk = 0) {
  if (strlen($rokmesden)>=6) $mes = substr($rokmesden,4,2);
  if (strlen($rokmesden)==2) $mes = $rokmesden;
  if (!isset($mes)) return "NENI";
  if (!is_numeric($mes)) return "NENI";
  switch (($mes*1)) {
    case 1: $mes = empty($sk) ? "Leden" : "ledna"; break;
    case 2: $mes = empty($sk) ? "Únor" : "února"; break;
    case 3: $mes = empty($sk) ? "Březen" : "března"; break;
    case 4: $mes = empty($sk) ? "Duben" : "dubna"; break;
    case 5: $mes = empty($sk) ? "Květen" : "května"; break;
    case 6: $mes = empty($sk) ? "Červen" : "června"; break;
    case 7: $mes = empty($sk) ? "Červenec" : "července"; break;
    case 8: $mes = empty($sk) ? "Srpen" : "srpna"; break;
    case 9: $mes = empty($sk) ? "Září" : "září"; break;
    case 10: $mes = empty($sk) ? "Říjen" : "října"; break;
    case 11: $mes = empty($sk) ? "Listopad" : "listopadu"; break;
    case 12: $mes = empty($sk) ? "Prosinec" : "prosince"; break;
  }
  return $mes;
}

?>