©
                    本文档使用
                    php中文网手册 发布
                
(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
IntlDateFormatter::create -- datefmt_create -- IntlDateFormatter::__construct — Create a date formatter
面向对象风格
$locale 
   ,  int $datetype 
   ,  int $timetype 
   [,   mixed  $timezone  = NULL 
   [,   mixed  $calendar  = NULL 
   [,  string $pattern  = "" 
  ]]] )面向对象风格 (constructor)
$locale 
   ,  int $datetype 
   ,  int $timetype 
   [,   mixed  $timezone  = NULL 
   [,   mixed  $calendar  = NULL 
   [,  string $pattern  = "" 
  ]]] )过程化风格
$locale 
   ,  int $datetype 
   ,  int $timetype 
   [,   mixed  $timezone  = NULL 
   [,   mixed  $calendar  = NULL 
   [,  string $pattern  = "" 
  ]]] )Create a date formatter.
locale 
       Locale to use when formatting or parsing or  NULL  to use the value
       specified in the ini setting intl.default_locale.
      
datetype 
       Date type to use ( none ,  short ,
        medium ,  long ,
        full ).  This is one of the IntlDateFormatter
       constants.  It can also be  NULL , in which case ICU?s default
       date type will be used.
      
timetype 
       Time type to use ( none ,  short ,
        medium ,  long ,
        full ).  This is one of the IntlDateFormatter
       constants.  It can also be  NULL , in which case ICU?s default
       time type will be used.
      
timezone 
       Time zone ID. The default (and the one used if  NULL  is given) is the
       one returned by  date_default_timezone_get()  or, if
       applicable, that of the IntlCalendar object passed
       for the calendar parameter. This ID must be a
       valid identifier on ICU?s database or an ID representing an
       explicit offset, such as GMT-05:30.
      
This can also be an IntlTimeZone or a DateTimeZone object.
calendar 
       Calendar to use for formatting or parsing. The default value is  NULL ,
       which corresponds to  IntlDateFormatter::GREGORIAN .
       This can either be one of the 
       IntlDateFormatter
       calendar constants or an IntlCalendar. Any
       IntlCalendar object passed will be clone; it will
       not be changed by the IntlDateFormatter. This will
       determine the calendar type used (gregorian, islamic, persian, etc.) and,
       if  NULL  is given for the timezone parameter,
       also the timezone used.
      
pattern Optional pattern to use when formatting or parsing. Possible patterns are documented at » http://userguide.icu-project.org/formatparse/datetime.
   The created IntlDateFormatter or  FALSE  in case of
   failure.
  
| 版本 | 说明 | 
|---|---|
| 5.5.0/PECL 3.0.0 | 
         An IntlCalendar object is allowed for
          
         Objects of type IntlTimeZone and
         DateTimeZone are allowed for
          
         Invalid timezone identifiers (including empty strings) are no longer
         allowed for  
         If   | 
Example #1 datefmt_create() example
  <?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 );
 ?>   Example #2 OO example
  <?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
          
[#1] mikko dot rantalainen at peda dot net [2012-03-29 13:08:10]
Documentation says "timezone: Time zone ID, default is system default."
The "system default" really means only the "TZ" environment variable on Unix/Linux systems. It does not mean PHP ini setting or value set via date_default_timezone_set() or the OS default time zone in file "/etc/timezone".
[#2] daniel dot rhodes at warpasylum dot co dot uk [2011-08-19 07:41:05]
It should be noted that the locale string passed into IntlDateFormatter's constructor supports UCA keywords. So you can, for example, do things like this to output the year as a Japanese era year:
<?php
$now = new DateTime();    //DateTime is a core PHP class as of version 5.2.0
$formatter = new IntlDateFormatter('ja_JP', IntlDateFormatter::FULL,
        IntlDateFormatter::FULL, 'Asia/Tokyo', IntlDateFormatter::GREGORIAN);
echo 'It is now: "' . $formatter->format($now) . '" in Tokyo' . "\n";
//above gives [It is now: "2011??8??19??????? 23?r32??27??JST" in Tokyo]
$formatter = new IntlDateFormatter('ja_JP@calendar=japanese', IntlDateFormatter::FULL,
        IntlDateFormatter::FULL, 'Asia/Tokyo', IntlDateFormatter::TRADITIONAL);
echo 'It is now: "' . $formatter->format($now) . '" in Tokyo' . "\n";
//above gives [It is now: "???23??8??19??????? 23?r32??27??JST" in Tokyo]
?>