date Field Type

A field that allows the user to modify date information via a variety of different HTML elements.

The underlying data used for this field type can be a DateTime object, a string, a timestamp or an array. As long as the input option is set correctly, the field will take care of all of the details.

The field can be rendered as a single text box, three text boxes (month, day, and year) or three select boxes (see the widget_ option).

Underlying Data Type can be DateTime, string, timestamp, or array (see the input option)
Rendered as single text box or three select fields
Parent type field (if text), form otherwise
Class Symfony\Component\Form\Extension\Core\Type\DateType

Basic Usage

This field type is highly configurable, but easy to use. The most important options are input and widget.

Suppose that you have a publishedAt field whose underlying date is a DateTime object. The following configures the date type for that field as three different choice fields:

$builder->add('publishedAt', 'date', array(
    'input'  => 'datetime',
    'widget' => 'choice',

The input option must be changed to match the type of the underlying date data. For example, if the publishedAt field’s data were a unix timestamp, you’d need to set input to timestamp:

$builder->add('publishedAt', 'date', array(
    'input'  => 'timestamp',
    'widget' => 'choice',

The field also supports an array and string as valid input option values.

Field Options


type: string default: choice

The basic way in which this field should be rendered. Can be one of the following:

  • choice: renders three select inputs. The order of the selects is defined in the pattern option.
  • text: renders a three field input of type text (month, day, year).
  • single_text: renders a single input of type text. User’s input is validated based on the format option.


type: string default: datetime

The format of the input data - i.e. the format that the date is stored on your underlying object. Valid values are:

  • string (e.g. 2011-06-05)
  • datetime (a DateTime object)
  • array (e.g. array('year' => 2011, 'month' => 06, 'day' => 05))
  • timestamp (e.g. 1307232000)

The value that comes back from the form will also be normalized back into this format.


type: string``|``array

If your widget option is set to choice, then this field will be represented as a series of select boxes. The empty_value option can be used to add a “blank” entry to the top of each select box:

$builder->add('dueDate', 'date', array(
    'empty_value' => '',

Alternatively, you can specify a string to be displayed for the “blank” value:

$builder->add('dueDate', 'date', array(
    'empty_value' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day')


type: array default: five years before to five years after the current year

List of years available to the year field type. This option is only relevant when the widget option is set to choice.


type: array default: 1 to 12

List of months available to the month field type. This option is only relevant when the widget option is set to choice.


type: array default: 1 to 31

List of days available to the day field type. This option is only relevant when the widget option is set to choice:

'days' => range(1,31)


type: integer or string default: IntlDateFormatter::MEDIUM

Option passed to the IntlDateFormatter class, used to transform user input into the proper format. This is critical when the widget option is set to single_text, and will define how to transform the input. By default, the format is determined based on the current user locale; you can override it by passing the format as a string.


type: string

This option is only relevant when the widget is set to choice. The default pattern is based off the format option, and tries to match the characters M, d, and y in the format pattern. If no match is found, the default is the string {{ year }}-{{ month }}-{{ day }}. Tokens for this option include:

  • {{ year }}: Replaced with the year widget
  • {{ month }}: Replaced with the month widget
  • {{ day }}: Replaced with the day widget


type: string default: system default timezone

Timezone that the input data is stored in. This must be one of the PHP supported timezones


type: string default: system default timezone

Timezone for how the data should be shown to the user (and therefore also the data that the user submits). This must be one of the PHP supported timezones



csrf Field Type


datetime Field Type





現在、翻訳が古くなっている箇所が多くあります。1箇所、1行などほんの少量でもかまいませんので、ドキュメント翻訳にご協力いただける方を募集しています。日本 Symfony ユーザー会メーリングリストまでご連絡ください。