getdate

(PHP 4, PHP 5, PHP 7, PHP 8)

getdateLiefert Datums- und Zeitinformationen

Beschreibung

getdate(?int $timestamp = null): array

Gibt ein assoziatives array mit Datums- und Zeitangaben des angegebenen timestamp zurück oder die lokal gültige Zeit, wenn timestamp weggelassen wird oder null ist.

Parameter-Liste

timestamp

Der optionale Parameter timestamp ist ein Unix-Zeitstempel vom Typ int. Falls timestamp nicht übergeben wird oder null ist, wird die aktuelle lokale Zeit als Standardwert verwendet. Er entspricht dann also dem Ergebnis der Funktion time().

Rückgabewerte

Gibt ein assoziatives Array mit Informationen zum timestamp zurück. Die Elemente des zurückgegebenen assoziativen Arrays sind folgende:

Schlüsselelemente des zurückgegebenen assoziativen Arrays
Key Beschreibung Mögliche Rückgabewerte
"seconds" Numerische Repräsentation der Sekunden 0 bis 59
"minutes" Numerische Repräsentation der Minuten 0 bis 59
"hours" Numerische Repräsentation der Stunden 0 bis 23
"mday" Numerische Repräsentation des Monatstags 1 bis 31
"wday" Numerische Repräsentation des Wochentags 0 (für Sonntag) bis 6 (für Sonnabend)
"mon" Numerische Repräsentation des Monats 1 bis 12
"year" Eine vollständige numerische Repräsentation der Jahreszahl (vierstellig) Beispiele: 1999 oder 2003
"yday" Numerische Repräsentation des Tages des Jahres 0 bis 365
"weekday" Eine vollständige textuelle Repräsentation des Wochentags Sonntag bis Sonnabend
"month" Eine vollständige textuelle Repräsentation des Monatsnamens, wie Januar oder März Januar bis Dezember
0 Sekunden seit der Unix-Epoche, ähnlich den Werten, die von der Funktion time() zurückgegeben und von der Funktion date() verwendet werden. Abhängig vom System, typischerweise ein Wert von -2147483648 bis 2147483647.

Changelog

Version Beschreibung
8.0.0 timestamp ist jetzt nullbar.

Beispiele

Beispiel #1 getdate()-Beispiel

<?php
$heute
= getdate();
print_r($heute);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Array
(
    [seconds] => 40
    [minutes] => 58
    [hours]   => 21
    [mday]    => 17
    [wday]    => 2
    [mon]     => 6
    [year]    => 2003
    [yday]    => 167
    [weekday] => Tuesday
    [month]   => June
    [0]       => 1055901520
)

Siehe auch

  • date() - Formatiert einen Unix-Zeitstempel
  • idate() - Formatiert einen Teil der lokalen Zeit/des lokalen Datums als Integer
  • localtime() - Ermittelt die lokale Zeit
  • time() - Liefert den aktuellen Unix-Zeitstempel
  • setlocale() - Legt regionale (locale) Einstellungen fest

add a note add a note

User Contributed Notes 6 notes

up
33
vimal866 at gmail dot com
9 years ago
Andre's code will throw an error. for the following line
   
     $d = $todayh[mday];
     $m = $todayh[mon];
     $y = $todayh[year];

"Notice : Undefined constant mday ,mon,year"

As is, it was looking for constants called mday, mon, year etc. When it doesn't find such a constant, PHP interprets it as a string.

like any other request it should be wrapped in quotes like this

     $d = $todayh['mday'];
     $m = $todayh['mon'];
     $y = $todayh['year'];
up
19
Yura Pylypenko (plyrvt at mail dot ru)
21 years ago
In addition to canby23 at ms19 post:
It's a very bad idea to consider day having 24 hours (86400 secs), because some days have 23, some - 25 hours due to daylight saving changes. Using of mkdate() and strtotime() is always preferred. strtotime() also has a very nice behaviour of datetime manipulations:
<?php
echo strtotime ("+1 day"), "\n";
echo
strtotime ("+1 week"), "\n";
echo
strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
echo
strtotime ("next Thursday"), "\n";
echo
strtotime ("last Monday"), "\n";
?>
up
-13
andre at anlex dot co dot za
18 years ago
I thought best to show a posseble way to go about bypassing the end month issue where the first day in a new month will have the monday of the week that it falls in - in the old month. Use the numbering of days as the constant and work you way from there.

Example:
<?php
//-----------------------------
$now = time();
$num = date("w");
if (
$num == 0)
{
$sub = 6; }
else {
$sub = ($num-1); }
$WeekMon  = mktime(0, 0, 0, date("m", $now)  , date("d", $now)-$sub, date("Y", $now));    //monday week begin calculation
$todayh = getdate($WeekMon); //monday week begin reconvert

$d = $todayh[mday];
$m = $todayh[mon];
$y = $todayh[year];
echo
"$d-$m-$y"; //getdate converted day

?>

Allot less code makes everyone happy..
up
-8
info at ajawbk dot com
6 years ago
another gmgetdate that is a little faster/suscint (no loops).

<?php
function gmgetdate2($ts = null){
       
$k = array('seconds','minutes','hours','mday',
               
'wday','mon','year','yday','weekday','month',0);
        return(
array_combine($k,split(":",
               
gmdate('s:i:G:j:w:n:Y:z:l:F:U',is_null($ts)?time():$ts))));
        }
?>

https://ajawbk.com/
up
-74
timforte at gmail dot com
16 years ago
It's worth noting that this is local time, not UTC/GMT - gmgetdate doesn't exist :(.

The most logical way to handle date arithmetic without hitting DST problems is to work in UTC...

<?php
function add_days($my_date,$numdays) {
 
$date_t = strtotime($my_date.' UTC');
  return
gmdate('Y-m-d',$date_t + ($numdays*86400));
}
?>

[it's even faster if you use gmmktime instead of strtotime]
up
-82
eric dot schultz at NOSPAM dot CyVon dot com
16 years ago
Here is another gmgetdate that is a little faster/suscint (no loops).

<?php
function gmgetdate2($ts = null){
       
$k = array('seconds','minutes','hours','mday',
               
'wday','mon','year','yday','weekday','month',0);
        return(
array_combine($k,split(":",
               
gmdate('s:i:G:j:w:n:Y:z:l:F:U',is_null($ts)?time():$ts))));
        }
?>

It also returns the values in the same order as getdate.
To Top