Class Date


public class Date extends ContextBean

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.

Note: Since Struts 6.0.0 a new Java 8 API has been used to format the Date, it's based on DateTimeFormatter which uses a bit different patterns.

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

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" />
  
 
Date
  • Field Details

    • DATETAG_PROPERTY

      public static final String DATETAG_PROPERTY
      Property name to fall back when no format is specified
      See Also:
    • DATETAG_PROPERTY_PAST

      public static final String DATETAG_PROPERTY_PAST
      Property name that defines the past notation (default: {0} ago)
      See Also:
    • DATETAG_PROPERTY_FUTURE

      public static final String DATETAG_PROPERTY_FUTURE
      Property name that defines the future notation (default: in {0})
      See Also:
    • DATETAG_PROPERTY_SECONDS

      public static final String DATETAG_PROPERTY_SECONDS
      Property name that defines the seconds notation (default: in instant)
      See Also:
    • DATETAG_PROPERTY_MINUTES

      public static final String DATETAG_PROPERTY_MINUTES
      Property name that defines the minutes notation (default: {0,choice,1#one minute|1<{0} minutes})
      See Also:
    • DATETAG_PROPERTY_HOURS

      public static final String DATETAG_PROPERTY_HOURS
      Property name that defines the hours notation (default: {0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1>, {1} minutes})
      See Also:
    • DATETAG_PROPERTY_DAYS

      public static final String DATETAG_PROPERTY_DAYS
      Property name that defines the days notation (default: {0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours})
      See Also:
    • DATETAG_PROPERTY_YEARS

      public static final String DATETAG_PROPERTY_YEARS
      Property name that defines the years notation (default: {0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1>, {1} days})
      See Also:
  • Constructor Details

  • Method Details

    • setDateFormatter

      public void setDateFormatter(DateFormatter dateFormatter)
      An instance of DateFormatter
    • formatTime

      public String formatTime(TextProvider tp, ZonedDateTime date)
      Calculates the difference in time from now to the given date, and outputs it nicely.
      An example:
      Now = 2006/03/12 13:38:00, date = 2006/03/12 15:50:00 will output "in 1 hour, 12 minutes".
      Parameters:
      tp - text provider
      date - the date
      Returns:
      the date nicely
    • end

      public boolean end(Writer writer, String body)
      Description copied from class: Component
      Callback for the end tag of this component. Should the body be evaluated again?
      NOTE: will pop component stack.
      Overrides:
      end in class Component
      Parameters:
      writer - the output writer.
      body - the rendered body.
      Returns:
      true if the body should be evaluated again
    • setFormat

      public void setFormat(String format)
    • setNice

      public void setNice(boolean nice)
    • setTimezone

      public void setTimezone(String timezone)
    • getName

      public String getName()
      Returns:
      the name.
    • setName

      public void setName(String name)
    • getFormat

      public String getFormat()
      Returns:
      the format.
    • isNice

      public boolean isNice()
      Returns:
      the nice.
    • getTimezone

      public String getTimezone()
      Returns:
      the timezone.