IntlDateFormatter::format

datefmt_format

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::format -- datefmt_format日付/時刻 の値を文字列としてフォーマットする

説明

オブジェクト指向型

public IntlDateFormatter::format(IntlCalendar|DateTimeInterface|array|string|int|float $datetime): string|false

手続き型

datefmt_format(IntlDateFormatter $formatter, IntlCalendar|DateTimeInterface|array|string|int|float $datetime): string|false

時刻の値を文字列としてフォーマットします。

パラメータ

formatter

Date Formatter リソース。

datetime

フォーマットする値。DateTimeInterface オブジェクト、 IntlCalendar オブジェクト、 epoch からの経過秒数を表す数値 (小数になる可能性もある)、 あるいは localtime() が出力する形式の配列となります。

DateTime オブジェクトあるいは IntlCalendar オブジェクトを渡した場合は、 そのタイムゾーンは考慮しません。これらをフォーマットするときに使うのは、 フォーマッターで設定されているタイムゾーンです。 渡したオブジェクトのタイムゾーンを使って欲しい場合は、 IntlDateFormatter::setTimeZone() を呼んでそのオブジェクトのタイムゾーンを設定しておかなければいけません。 あるいは、staticメソッド IntlDateFormatter::formatObject() をかわりに使ってもかまいません。

戻り値

フォーマットされた文字列、あるいはエラーが発生した場合は false を返します。

変更履歴

バージョン 説明
7.1.5 datetime パラメータに 一般的な DateTimeInterface オブジェクトのサポートが追加されました。 これより前のバージョンでは、DateTime オブジェクトのみがサポートされていました。
PECL 3.0.0 IntlCalendar オブジェクトを datetime に渡せるようになりました。

例1 datefmt_format() の例

<?php
$fmt 
datefmt_create(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
echo 
'First Formatted output is ' datefmt_format($fmt0);

$fmt datefmt_create(
    
'de-DE',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
echo 
'Second Formatted output is ' datefmt_format($fmt0);

$fmt datefmt_create(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN,
    
'MM/dd/yyyy'
);
echo 
'First Formatted output with pattern is ' datefmt_format($fmt0);

$fmt datefmt_create(
    
'de-DE',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN,
    
'MM/dd/yyyy'
);
echo 
"Second Formatted output with pattern is " datefmt_format($fmt0);
?>

例2 オブジェクト指向の例

<?php
$fmt 
= new IntlDateFormatter(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
echo 
'First Formatted output is ' $fmt->format(0);

$fmt = new IntlDateFormatter(
    
'de-DE',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
echo 
'Second Formatted output is ' $fmt->format(0);

$fmt = new IntlDateFormatter(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN,
    
'MM/dd/yyyy'
);
echo 
'First Formatted output with pattern is ' $fmt->format(0);

$fmt = new IntlDateFormatter(
    
'de-DE',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN,
    
'MM/dd/yyyy'
);
echo 
'Second Formatted output with pattern is ' $fmt->format(0);
?>

上の例の出力は以下となります。

First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00
First Formatted output with pattern is 12/31/1969
Second Formatted output with pattern is 12/31/1969

例3 IntlCalendar オブジェクトを使う例

<?php
$tz 
reset(iterator_to_array(IntlTimeZone::createEnumeration('FR')));
$formatter IntlDateFormatter::create(
    
'fr_FR',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
$tz,
    
IntlDateFormatter::GREGORIAN
);

$cal IntlCalendar::createInstance($tz'@calendar=islamic-civil');
$cal->set(IntlCalendar::FIELD_MONTH8); //9th month, Ramadan
$cal->set(IntlCalendar::FIELD_DAY_OF_MONTH1); //1st day
$cal->clear(IntlCalendar::FIELD_HOUR_OF_DAY);
$cal->clear(IntlCalendar::FIELD_MINUTE);
$cal->clear(IntlCalendar::FIELD_SECOND);
$cal->clear(IntlCalendar::FIELD_MILLISECOND);

echo 
"In this islamic year, Ramadan started/will start on:\n\t",
        
$formatter->format($cal), "\n";

// フォーマッターのタイムゾーンを利用します
$formatter->setTimeZone('Asia/Tokyo');
echo 
"After changing timezone:\n\t",
        
$formatter->format($cal), "\n";

上の例の出力は以下となります。

In this islamic year, Ramadan started/will start on:
    mardi 9 juillet 2013 19:00:00 heure avancée d’Europe centrale
After changing timezone:
    mercredi 10 juillet 2013 02:00:00 heure normale du Japon

参考

関連キーワード:  フォーマット, オブジェクト, datefmt, IntlDateFormatter, 時刻, format, 日付, IntlCalendar, , datetime