<?php

/**
 * Date Formatter class - locale-dependent formatting/parsing of dates using pattern strings and/or canned patterns.
 *
 * This class represents the ICU date formatting functionality. It allows users to
 * display dates in a localized format or to parse strings 
 * into PHP date values using pattern strings and/or canned patterns.
 * 
 * Example:
 * <code>
 * $datefmt = new DateFormatter("de-DE", LONG, SHORT, date_default_timezone_get());
 * echo $formatter->format(time());
 * </code>
 *
 * <code>
 *  $datefmt = new DateFormatter("de-DE", LONG, SHORT, date_default_timezone_get() , GREGORIAN , "yyyy-MM-dd HH:mm:ss z");
 *  echo $formatter->format(time());
 * </code>
 *
 * @see http://www.icu-project.org/apiref/icu4c/udat_8h.html
 *
 */
class DateFormatter {

#############################################################################
# Common constants.
#############################################################################

   /**
    * The following constants are used to specify different formats
    * in the constructor.
    */
    
const NONE = -1;
    const 
FULL 0;
    const 
LONG 1;
    const 
MEDIUM 2;
    const 
SHORT 3;

    
/**
     * The following int constants are used to specify the calendar. 
     * These calendars are all based directly on the Gregorian calendar 
     * Non-Gregorian calendars need to be specified in locale. 
     * Examples might include locale="hi@calendar=BUDDHIST"
     */
    
const TRADITIONAL 0// non-Gregorian calendar that is locale-defined, required by ICU
    
const GREGORIAN ;// Gregorian calendar
    
#############################################################################
# Object-oriented API
#############################################################################
    /**
     * Create a date formatter 
     *
     * @param string  $locale     Locale to use when formatting or parsing
     * @param integer $datetype   Date type to use (none, short, medium, long, full)
     * @param integer $timetype   Time type to use (none, short, medium, long, full)
     * @param [String] $timezone  Time zone ID ; default is system default
     * @param [integer] $calendar Calendar to use for formatting or parsing; default is
     *                            GREGORIAN
     * @param [string]  $pattern  Optional pattern to use when formatting or parsing
     * @return DateFormatter
     * @see __construct
     * @see datefmt_create
     */
    
public function __construct($locale$datetype$timetype$timezone null$calendarnull $patternnull) {}

    
/**
     * Create a date formatter 
     *
     * @param string  $locale     Locale to use when formatting or parsing
     * @param integer $datetype   Date type to use (none, short, medium, long, full)
     * @param integer $timetype   Time type to use (none, short, medium, long, full)
     * @param [string] $timezone  Time zone ID ; default is system default
     * @param [integer] $calendar Calendar to use for formatting or parsing; default is
     *                            GREGORIAN
     * @param [string]  $pattern  Optional pattern to use when formatting or parsing
     * @return DateFormatter
     * @see __construct
     * @see datefmt_create
     */
    
public static function create($locale$datetype$timetype$timezone null$calendarnull $patternnull) {}

    
/**
         * formats the time value as a string.
     * @param mixed $value - value to format
         *     integer: a unix timestamp value (seconds since epoch, UTC)
         *     array: a localtime array  - uses 24 hour clock in tm_hour field
         * @return string  a formatted string or, if an error occurred, 'null'. 
     */
        
public function format($value) {}


        
/**
         * converts string $value to an incremental time value, starting at
     * $parse_pos and consuming as much of the input value as possible
     * If no error occurs before $value is consumed, $parse_pos will contain -1
     * otherwise it will contain the position at which parsing ended (and the error
     * occurred). 
     * @param string  $value      string to convert to a time
     * @param integer $parse_pos  position at which to start the parsing in $value (zero-based)
     *                            This variable will contain the end position if the parse fails
     *                            If $parse_pos > strlen($value), the parse fails immediately.
     * @return integer timestamp  parsed value
     */
     
public function parse($value$parse_pos=0) {}

     
        
/**
         * converts string $value to a field-based time value, starting at
     * $parse_pos and consuming as much of the input value as possible
     * If no error occurs before $value is consumed, $parse_pos will contain -1
     * otherwise it will contain the position at which parsing ended (and the error
     * occurred). 
     * @param string  $value      string to convert to a time
     * @param integer $parse_pos  position at which to start the parsing in $value (zero-based)
     *                            This variable will contain the end position if the parse fails
     *                            If $parse_pos > strlen($value), the parse fails immediately.
     * @return array localtime compatible array of integers  - uses 24 hour clock in tm_hour field
     */
     
public function localtime($value$parse_pos=0) {}


     
/**
      * Gets the datetype in use 
      * @return integer the current 'datetype' value of the formatter
      */
         
public function getDateType() {}


     
/**
      * Gets the timetype in use 
      * @return integer the current 'timetype' value of the formatter
      */
         
public function getTimeType() {}


     
/**
      * Gets the leniency in use 
      * @return boolean   'true' if parser is lenient, 'false' if parser is strict
      *                   default value for parser is 'false'.
      */
         
public function isLenient() {}


     
/**
      * Sets the leniency to use 
      * @param boolean $lenient  sets whether the parser is lenient or not, default is 'false'
          *                          'true' sets the parser to accept otherwise flawed date or 
      *                          time patterns, parsing as much as possible to obtain a value.
          *                          'false' sets the parser to strictly parse strings into dates. 
      *                          Extra space, unrecognized tokens, or invalid values 
      *                          ("Feburary 30th") are not accepted.
      *
          * @return boolean          'true' if successful; 'false' if an error occurred. 
      */
     
public function setLenient($lenient) {}


     
/**
      * Gets the locale in use 
      * @param  [integer]  which locale should be returned? 
      *                    values may include ULOC_ACTUAL_LOCALE,
      *                    ULOC_VALID_LOCALE. By default the actual
      *                    locale is returned.
      * @return string     the locale of this formatter  or 'false' if error
     */

     
public function getLocale($type ULOC_ACTUAL_LOCALE) {}


         
/**
      * @return string ID string for the time zone used by this formatter
      */
     
public function getTimeZoneId() {}


    
/**
     * sets the time zone to use
     * @param string $zone zone ID string of the time zone to use.
     *                     if null or the empty string, the default time zone for
     *                     the runtime is used.
     * @return boolean 'true' on successful setting of the time zone, 'false'
     *                 if an error occurred (such as the time zone wasn't recognized).
     */
        
public function setTimeZoneId($zone) {}


        
/**
         * Sets the calendar used to the appropriate calendar, which must be 
     * one of the constants defined above. Some examples include:
         *   - Gregorian calendar
         *   - Traditional
         * Default value is GREGORIAN
     * @param integer $which the calendar (an enumerated constant) to use.
         * @return boolean 'true' if successful, 'false' if an error occurred or if the calendar was not recognized 
     */
         
public function setCalendar($which) {}


        
/**
     * Gets the Calendar in use 
     * @return integer the calendar being used by the formatter
     */
         
public function getCalendar() {}


        
/**
     * Gets the pattern in use 
         * @return string the pattern string being used to format/parse 
     */
    
public function getPattern() {}


        
/**
     * Sets the pattern to  use 
         * @param  string $pattern new pattern string to use
         * @return boolean 'true' if successful, 'false' if an error occurred. Bad format
         *                 strings are usually the cause of the latter.
         */
    
public function setPattern($pattern) {}


    
/**
     * Get the error code from last operation
     *
     * Returns error code from the last number formatting operation.
     *
     * @return integer the error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.
     */
    
public function getErrorCode() {}


    
/**
     * Get the error text from the last operation.
     *
     * @return string Description of the last error.
     */
    
public function getErrorMessage() {}


}

#############################################################################
# Procedural API
#############################################################################


    /**
     * Create a date formatter 
     *
     * @param string  $locale     Locale to use when formatting or parsing
     * @param integer $datetype   Date type to use (none, short, medium, long, full)
     * @param integer $timetype   Time type to use (none, short, medium, long, full)
     * @param [string] $timezone  Time zone ID ; default is system default
     * @param [integer] $calendar Calendar to use for formatting or parsing; default is
     *                            GREGORIAN
     * @param [string]  $pattern  Optional pattern to use when formatting or parsing
     * @return DateFormatter
     * @see datefmt_create
     */
    
function datefmt_create($locale$datetype$timetype$timezone null$calendarnull ,$pattern=null ) {}


    
/**
         * formats the time value as a string.
         * @param DateFormatter $fmt The date formatter resource
     * @param mixed $value - value to format
         *     integer: a unix timestamp value (seconds since epoch, UTC)
         *     array: a localtime array   - uses 24 hour clock in tm_hour field
         * @return string  a formatted string or, if an error occurred, 'null'. 
     */
        
function datefmt_format($fmt $value) {}


        
/**
         * converts string $value to an incremental time value, starting at
     * $parse_pos and consuming as much of the input value as possible
     * If no error occurs before $value is consumed, $parse_pos will contain -1
     * otherwise it will contain the position at which parsing ended (and the error
     * occurred). 
         * @param DateFormatter $fmt The date formatter resource
     * @param string  $value      string to convert to a time
     * @param integer $parse_pos  position at which to start the parsing in $value (zero-based)
     *                            This variable will contain the end position if the parse fails
     *                            If $parse_pos > strlen($value), the parse fails immediately.
     * @return integer timestamp  parsed value
     */
     
function datefmt_parse($fmt $value$parse_pos=0) {}

     
        
/**
         * converts string $value to a field-based time value, starting at
     * $parse_pos and consuming as much of the input value as possible
     * If no error occurs before $value is consumed, $parse_pos will contain -1
     * otherwise it will contain the position at which parsing ended (and the error
     * occurred). 
         * @param DateFormatter $fmt The date formatter resource
     * @param string  $value      string to convert to a time
     * @param integer $parse_pos  position at which to start the parsing in $value (zero-based)
     *                            This variable will contain the end position if the parse fails
     *                            If $parse_pos > strlen($value), the parse fails immediately.
     * @return array localtime compatible array of integers  - uses 24 hour clock in tm_hour field
     */
     
function datefmt_localtime($fmt $value$parse_pos=0) {}


     
/**
      * Gets the  Datetype in use
          * @param DateFormatter $fmt The date formatter resource
      * @return integer the current 'datetype' value of the formatter
      */
         
function datefmt_get_datetype($fmt ) {}


     
/**
      * Gets the  timetype in use
          * @param DateFormatter $fmt The date formatter resource
      * @return integer the current 'timetype' value of the formatter
      */
         
function datefmt_get_timetype($fmt) {}


     
/**
      * Gets the leniency of the formatter 
          * @param DateFormatter $fmt The date formatter resource
      * @return boolean   'true' if parser is lenient, 'false' if parser is strict
      *                   default value for parser is 'false'.
      */
         
function datefmt_is_lenient($fmt) {}


     
/**
      * Sets the leniency of the formatter 
          * @param DateFormatter $fmt The date formatter resource
      * @param boolean $lenient  sets whether the parser is lenient or not, default is 'false'
          *                          'true' sets the parser to accept otherwise flawed date or 
      *                          time patterns, parsing as much as possible to obtain a value.
          *                          'false' sets the parser to strictly parse strings into dates. 
      *                          Extra space, unrecognized tokens, or invalid values 
      *                          ("Feburary 30th") are not accepted.
      *
          * @return boolean          'true' if successful; 'false' if an error occurred. 
      */
     
function datefmt_set_lenient($fmt $lenient) {}


     
/**
      * Gets the locale in  use
          * @param DateFormatter $fmt The date formatter resource
      * @param  [integer]  which locale should be returned? 
      *                    values may include ULOC_ACTUAL_LOCALE,
      *                    ULOC_VALID_LOCALE. By default the actual
      *                    locale is returned.
      * @return string     the locale of this formatter  or 'false' if error
     */
     
function datefmt_get_locale($fmt $type ULOC_ACTUAL_LOCALE) {}


         
/**
      * Gets the time zone id in  use
          * @param DateFormatter $fmt The date formatter resource
      * @return string ID string for the time zone used by this formatter
      */
     
function datefmt_get_timezone_id($fmt) {}


    
/**
     * Sets the time zone to use
         * @param DateFormatter $fmt The date formatter resource
     * @param string $zone zone ID string of the time zone to use.
     *                     if null or the empty string, the default time zone for
     *                     the runtime is used.
     * @return boolean 'true' on successful setting of the time zone, 'false'
     *                 if an error occurred (such as the time zone wasn't recognized).
     */
        
function datefmt_set_timezone_id($fmt $zone) {}


        
/**
         * Sets the calendar used to the appropriate calendar, which must be 
     * one of the constants defined above. Some examples include:
         *   - Gregorian calendar
         *   - Traditional
         * Default value is GREGORIAN
         * @param DateFormatter $fmt The date formatter resource
     * @param integer $which the calendar (an enumerated constant) to use.
         * @return boolean 'true' if successful, 'false' if an error occurred or if the calendar was not recognized 
     */
         
function datefmt_set_calendar($fmt $which) {}


        
/**
     * Gets the calendar in use
         * @param DateFormatter $fmt The date formatter resource
     * @return integer the calendar being used by the formatter
     */
         
function datefmt_get_calendar($fmt) {}


        
/**
     * Gets the pattern in use
         * @param DateFormatter $fmt The date formatter resource
         * @return string the pattern string being used to format/parse
         */
        
function  datefmt_get_pattern($fmt) {}


        
/**
     * Sets the pattern to use
         * @param DateFormatter $fmt The date formatter resource
         * @param  string $pattern new pattern string to use
         * @return boolean 'true' if successful, 'false' if an error occurred. Bad format
         *                 strings are usually the cause of the latter.
         */
        
function datefmt_set_pattern($fmt $pattern) {}


    
/**
     * Get the error code from last operation
     *
         * @param DateFormatter $fmt The date formatter resource
     * Returns error code from the last number formatting operation.
     *
     * @return integer the error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.
     */
    
function datefmt_get_error_code($fmt) {}


    
/**
     * Get the error text from the last operation.
     *
         * @param DateFormatter $fmt The date formatter resource
     * @return string Description of the last error.
     */
    
function datefmt_get_error_message($fmt) {}