PHP Velho Oeste 2024

getdate

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

getdate日付/時刻情報を取得する

説明

getdate(?int $timestamp = null): array

timestamp に関する日付情報を有する連想配列を返します。 timestamp が省略されたり、null だった場合、現在のローカルな時間に関する情報を返します。

パラメータ

timestamp

オプションのパラメータ timestamp は、 int 型の Unix タイムスタンプです。 timestamp が指定されなかったり、null だった場合のデフォルト値は、 現在の時刻です。言い換えると、デフォルトは time() の返り値となります。

戻り値

timestamp に関連する情報を連想配列で返します。 返される連想配列の内容は、次のようになります。

返される連想配列のキー
キー 説明 戻り値の例
"seconds" 秒。数値。 0 から 59
"minutes" 分。数値。 0 から 59
"hours" 時。数値 0 から 23
"mday" 月単位の日。数値 1 から 31
"wday" 曜日。数値。 0 (日曜) から 6 (土曜)
"mon" 月。数値。 1 から 12
"year" 年。4桁の数値。 例: 1999 あるいは 2003
"yday" 年単位の日。数値。 0 から 365
"weekday" 曜日。フルスペルの文字。 Sunday から Saturday
"month" 月。フルスペルの文字。 January から December
0 UNIX時(1970年1月1日)からの秒数。 time()の戻り値と同様。 date()でも使用される。 システムによって違うが、通常は-2147483648 から 2147483647.

変更履歴

バージョン 説明
8.0.0 timestamp は、nullable になりました。

例1 getdate() の例

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

上の例の出力は、 たとえば以下のようになります。

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

参考

  • date() - Unixタイムスタンプを書式化する
  • idate() - ローカルな時刻/日付の一部を整数として整形する
  • localtime() - ローカルタイムを得る
  • time() - 現在の Unix タイムスタンプを返す
  • setlocale() - ロケール情報を設定する

add a note add a note

User Contributed Notes 6 notes

up
33
vimal866 at gmail dot com
8 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)
20 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
17 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
5 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
15 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