<DateField>
Displays a date, datetime or time using the browser locale (thanks to Date.toLocaleDateString(), Date.toLocaleString() and Date.toLocaleTimeString()).

Usage
In a List or a Show view, use <DateField> as any other field component to render a date value:
import { List, Datagrid, TextField, DateField } from 'react-admin';
export const PostList = () => (
<List>
<Datagrid>
<TextField source="id" />
<TextField source="title" />
<DateField source="published_at" />
...
</Datagrid>
</List>
)
<DateField> renders the record { id: 1234, published_at: '2017-04-23' } as <span>04/23/2017</span> in US English and <span>23/04/2017</span> in French.
<DateField> works for values that are dates (e.g. new Date('2017-04-23')) or strings that convert to dates (e.g. '2017-04-23').
<DateField> uses the Intl.DateTimeFormat browser API if available, passing the locales and options props as arguments. This allows a perfect display of dates, datetimes and times. See Intl.DateTimeFormat documentation for the options prop syntax. If Intl is not available, <DateField> outputs dates as is (and ignores the locales and options props).
Props
| Prop | Required | Type | Default | Description |
|---|---|---|---|---|
locales |
Optional | string | ββ | Override the browser locale in the date formatting. Passed as first argument to Intl.DateTimeFormat(). |
options |
Optional | Object | - | Date formatting options. Passed as second argument to Intl.DateTimeFormat(). |
showTime |
Optional | boolean | false |
If true, show the time |
showDate |
Optional | boolean | true |
If true, show the date |
transform |
Optional | Function | - | A function to transform the value before display. |
<DateField> also accepts the common field props.
locales
Override the browser locale for the date formatting. Passed as first argument to Intl.DateTimeFormat().
<DateField source="published_at" locales="fr-FR" />
// renders the record { id: 1234, published_at: new Date('2017-04-23') } as
<span>23/04/2017</span>
When no locales prop is passed, <DateField> uses the browser locale.
options
Options passed to Intl.DateTimeFormat(). See Intl.DateTimeFormat documentation for the options prop syntax.
<DateField source="published_at" options={{
weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric'
}} />
// renders the record { id: 1234, published_at: new Date('2017-04-23') } as
<span>Sunday, April 23, 2017</span>
Tip: If you need more formatting options than what Intl.DateTimeFormat can provide, build your own field component leveraging a third-party library like moment.js.
showDate
By default, <DateField> displays a date using date.toLocaleDateString(). Set showDate to false to only display the time.
<DateField source="published_at" showTime showDate={false} />
// renders the record { id: 1234, published_at: new Date('2017-04-23 23:05') } as
<span>11:05:00 PM</span>
When showDate is false, <DateField> uses the date.toLocaleTimeString() to format the time.
showTime
By default, <DateField> displays a date using date.toLocaleDateString(). Set showTime to true to display both the date and time, using date.toLocaleString().
<DateField source="published_at" showTime />
// renders the record { id: 1234, published_at: new Date('2017-04-23 23:05') } as
<span>4/23/2017, 11:05:00 PM</span>
You can also set showDate to false to only display the time.
<DateField source="published_at" showTime showDate={false} />
// renders the record { id: 1234, published_at: new Date('2017-04-23 23:05') } as
<span>11:05:00 PM</span>
transform
<DateField> excepts the field value to be a date or a string. If itβs a string, it does an automatic conversion to date (using the new Date() constructor) before formatting that date.
You may want to override that string to date conversion if the value uses a special format. Use the transform prop for that. It expects a function that takes the field value as argument and returns the transformed value.
<DateField
source="published_at"
transform={value =>
new Date(value.replace(/(\d{2})-(\d{2})-(\d{2})/, '20$3-$1-$2'))
}
/>
// renders the record { id: 1234, published_at: '01-23-16' } as
<span>01/23/2016</span>
