idate

(PHP 5, PHP 7, PHP 8)

idateローカルな時刻/日付の一部を整数として整形する

説明

idate(string $format, ?int $timestamp = null): int|false

指定された引数 timestamp を、 与えられたフォーマット文字列によりフォーマットし、日付数値を返します。 タイムスタンプが与えられない場合は、現在のローカル時刻が使われます。 つまり、timestamp はオプションであり、 そのデフォルト値は time() の値です。

関数 date() と異なり、idate()format パラメータ中は一文字しか受け取りません。

パラメータ

format

以下の文字が format パラメータ文字列として認識されます
format 文字 説明
B Swatch ビート/インターネット時間
d 月の日
h 時 (12 時間単位)
H 時 (24 時間単位)
i
I (大文字の i) 夏時間の適用中は 1、 そうでなければ 0 を返す
L (大文字の l) 閏年なら 1、 そうでなければ 0 を返す
N ISO-8601 形式の曜日 (1 は月曜日で、 7 が日曜日)
o ISO-8601 形式の年 (4 桁の数値)
m 月数
s
t 現在の月の日数
U Unix Epoch (January 1 1970 00:00:00 UTC) からの秒数。 これは time() と同じです
w 曜日 (日曜日は 0)
W ISO-8601 形式。月曜日から始まる年単位の週番号
y 年 (1 桁あるいは 2 桁の数値 - 下の「注意」を確認ください)
Y 年 (4 桁)
z 年間の通算日
Z タイムゾーンのオフセット秒数

timestamp

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

戻り値

整数値を返します。 失敗した場合に false を返します

idate() が返す値の型は常に int であり、 先頭に "0" がくることはありません。そのため、idate() の返す結果が予想より少ない桁数になることもあります。以下の例を参照ください。

エラー / 例外

すべての日付/時刻関数は、 有効なタイムゾーンが設定されていない場合に E_WARNING を発生させます。 date_default_timezone_set() も参照ください。

変更履歴

バージョン 説明
8.2.0 フォーマット文字 N (ISO-8601 形式の曜日) と o (ISO-8601 形式の年) が追加されました。
8.0.0 timestamp は、nullable になりました。

例1 idate() の例

<?php
$timestamp
= strtotime('1st January 2004'); //1072915200

// これは、年を 2 桁で表示します。
// しかし、ここでは年が "0" から始まるので、
// "4" だけが表示されます。
echo idate('y', $timestamp);
?>

参考

  • DateTimeInterface::format() - 指定した書式でフォーマットした日付を返す
  • date() - Unixタイムスタンプを書式化する
  • getdate() - 日付/時刻情報を取得する
  • time() - 現在の Unix タイムスタンプを返す

add a note add a note

User Contributed Notes 1 note

up
2
khaine at herbok dot org
13 years ago
A function that made by idate for print a hour you want:

<?php
function hour ( $a, $b )
{
   
$timestamp = strtotime(''.$a.':'.$b.':00');
   
$aa = idate('H', $timestamp);
   
$bb = idate('i', $timestamp);
    if(
$bb=="0") { $cc = "00"; } else { $cc = $bb; }
   
$dd = $aa.".".$cc;
    return(
$dd);
}
?>

Why should i use it?
For example:
You have to print 08:00 to 21:00 by 15 minutes periods.
This is a useful code for shipping sites for delivery time.

<?php
echo "<select name=\"example\">";
for(
$i=8;$i<=20;$i++)
{
    for(
$ii=0;$ii<=3;$ii++)
    {
       
$iii = $ii * 15;
       
$hour = hour($i, $iii);
        echo
"<option value=\"".$hour."\">".$hour."</option>";
    }
}
echo
"</select>";
?>
To Top