Edit on GitHub << back to Tag Reference

# date

Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.

## Description

Format Date object in different ways.

The date tag will allow you to format a Date in a quick and easy way. You can specify a custom format (eg. “dd/MM/yyyy hh:mm”), you can generate easy readable notations (like “in 2 hours, 14 minutes”), or you can just fall back on a predefined format with key `struts.date.format` in your properties file.

If that key is not defined, it will finally fall back to the default `DateFormat.MEDIUM` formatting.

> Note: If the requested Date object isn’t found on the stack, a blank will be returned.

Configurable attributes are:

- name
- nice
- format

Following how the date component will work, depending on the value of nice attribute (which by default is false) and the format attribute.

Condition 1: With nice attribute as true

i18n key | default
struts.date.format.past | {0} ago
struts.date.format.future | in {0}
struts.date.format.seconds | an instant
struts.date.format.minutes | {0,choice,1#one minute|1<{0} minutes}
struts.date.format.hours | {0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}
struts.date.format.days | {0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}
struts.date.format.years | {0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days}

Condition 2: With nice attribute as false and format attribute is specified eg. dd/MM/yyyyy

In this case the format attribute will be used.

Condition 3: With nice attribute as false and no format attribute is specified

i18n key | default
--- | ---
struts.date.format | if one is not found DateFormat.MEDIUM format will be used

Render a formatted date.

## Attributes

#### Dynamic Attributes Allowed: false
#### Name | #### Required | #### Default | #### Evaluated | #### Type | #### Description
--- | --- | --- | --- | --- | ---
format | false |  | false | String | Date or DateTime format pattern
name | true |  | false | String | The date value to format
nice | false | false | false | Boolean | Whether to print out the date nicely
performClearTagStateForTagPoolingServers | false | false | false | Boolean | Whether to clear all tag state during doEndTag() processing (if applicable)
timezone | false |  | false | String | The specific timezone in which to format the date
var | false |  | false | String | Name used to reference the value pushed into the Value Stack (scope: action).

## Examples

      <s:date name="person.birthday" format="dd/MM/yyyy" />
      <s:date name="person.birthday" format="%{getText('some.i18n.key')}" />
      <s:date name="person.birthday" nice="true" />
      <s:date name="person.birthday" />