Fork me on GitHub
Edit on GitHub << back to Tag Reference


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


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 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:

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 {0} ago in {0} an instant {0,choice,1#one minute|1<{0} minutes} {0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes} {0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours} {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 if one is not found DateFormat.MEDIUM format will be used

Render a formatted date.


Dynamic Attributes Allowed:








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).


  <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" />