downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

IntlDateFormatter::getCalendar> <IntlDateFormatter::create
[edit] Last updated: Fri, 25 May 2012

view this page in

IntlDateFormatter::format

datefmt_format

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

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

説明

オブジェクト指向型

string IntlDateFormatter::format ( mixed $value )

手続き型

string datefmt_format ( IntlDateFormatter $fmt , mixed $value )

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

パラメータ

fmt

Date Formatter リソース。

value

フォーマットする値。DateTime オブジェクト、 Unix タイムスタンプ (epoch からの経過秒数、UTC) を表す整数値、あるいは localtime() 用の配列となります。

返り値

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

変更履歴

バージョン 説明
5.3.4 DateTime オブジェクトを value パラメータに渡せるようになりました。

例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$fmt 0);
$fmt datefmt_create"de-DE" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL,'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo 
"Second Formatted output is ".datefmt_format$fmt 0);

$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$fmt 0);
$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$fmt 0);
?>

例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

参考



add a note add a note User Contributed Notes IntlDateFormatter::format
con at bartrail dot de 07-Oct-2011 01:47
I hope this will save some time for others who have to struggle with different php versions on dev and prod plattform in the future:

when formatting a DateTime object with a *custom pattern*, be sure to use a timestamp to pass at the IntlDateFormatter::format in order to have it working on different php versions:

Example for PHP Version 5.3.5-1ubuntu7.2 (my dev machine):
<?php
$date
= new \DateTime();

$dateFormatter = \IntlDateFormatter::create(
  \
Locale::getDefault(),
  \
IntlDateFormatter::NONE,
  \
IntlDateFormatter::NONE,
  \
date_default_timezone_get(),
  \
IntlDateFormatter::GREGORIAN,
 
'EEEE'
);

var_dump($dateFormatter->format($date)); // string(6) "Monday"
?>

Example for PHP Version 5.3.2-1ubuntu4.9 (the prod server):
<?php
// same formatting as above

var_dump($dateFormatter->format($date)); // bool(false)
?>

When using $dateFormatter->format($date->getTimestamp()), you'll always get the formatted and localized string instead of a false.
alex 19-May-2010 08:10
It's important to note that a conversion of timezones will be made from the default timezone (date_default_timezone_set()) and the timezone you passed in the constructor (or datefmt_create()).

If you are inserting the dates into your database as UTC time, make sure to set date_default_timezone_set to UTC as well (or any other timezone, but they need to be the same). Once you call ::format, you will get the converted time.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites