Formatowanie daty

Marek Szydełko
05.09.2015

Witam, miałem ostatnio taki problem jednak pomogli mi użytkownicy z pewnego forum o PHP. Pierw, co to jest TIMESTAMP. Jest to najbardziej popularny wzór zapisywania dat. Posiada wbudowaną funkcję w SQL do formatowania pobranej daty. Wzór wygląda tak: YYYY-MM-DD HH:MM:SS

Teraz pokaże 4 znane mi możliwości.
1. Jest to najszybszy sposób jaki znam, jest on zgodny z TIMESTAMP w 90% (nie rzuca błędów)

<?php
$nowDay = getdate();
$date = $nowDay['year'].'-'.$nowDay['mon'].'-'.$nowDay['mday'].' '.$nowDay['hours'].':'.$nowDay['minutes'].':'.$nowDay['seconds'];

"seconds" Ilość sekund 0 do 59
"minutes" Liczba minut 0 do 59
"hours" Ilość godzin 0 do 23
"mday" Liczba będąca dniem miesiąca 1 do 31
"wday" Dzień tygodnia w postacy cyfry 0 (dla Niedzieli) aż do 6 (dla Soboty)
"mon" Miesiąc w postaci liczby 1 aż do 12
"year" Pełen rok w postaci liczby, 4 cyfry Przykłady: 1999 lub 2003
"yday" Dzień danego roku, w postaci liczby 0 aż do 365
"weekday" Pełna nazwa dnia tygodnia, w języku angielskim Sunday aż do Saturday
"month" Pełna nazwa miesiąca, w języku angielskim, jak np. January lub March January aż do December
0 Sekundy, które upłynęły od Ery Uniksa, podobnie jak wartość zwracana przez time() i użyta przez funkcję date(). Zależnie od systemu, zazwyczaj -2147483648 aż do 2147483647.


Nie zgodnośc jest ponieważ wartości podawane są bez zer wiodących lecz Zostanie ono dodane samo. Ma to zaletę ponieważ liczby z zerami wiodącymi nie są zgodne z standardami m.in w JS

2. Sposób wolniejszy od 1 lecz też polecany

$time = date("H:i:s");
$data = date("y-m-d");
$hour = explode(":", $time);
$day = explode("-",$data);
$newhour = $hour[0] + 1;
if ($newhour > 23) {
    $newhour = $newhour - 24;
    $day[2] = $day[2]+1;
}
$arrtime = array($newhour, $hour[1], $hour[2]);
$arrdate = array($day[0], $day[1], $day[2]);
$newtime = implode(":",$arrtime);
$newdata = implode("-",$arrdate);
$arrtemp = array($newdata, $newtime);
$newdate = implode(" ",$arrtemp);

Używany w Vallheru bardzo poręczny lecz nie za szybki.

3.Sposób najwolniejszy i niepolecany.

$arrDate['Y'] = date('Y');
$arrDate['m'] = date('m');
$arrDate['d'] = date('d');
$arrDate['H'] = date('H');
$arrDate['i'] = date('i');
$arrDate['s'] = date('s');
$date = $arrDate['Y'].'-'.$arrDate['m'].'-'$arrDate['d'].' '.$arrDate['H'].':'.$arrDate['i'].':'.$arrDate['s'];

4. Bardzo szybki lecz działa tylko w jedną stronę

$date = date('Y-m-d H:i:s);

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie