Class PeriodFormat

java.lang.Object
org.joda.time.format.PeriodFormat

public class PeriodFormat extends Object
Factory that creates instances of PeriodFormatter.

Period formatting is performed by the PeriodFormatter class. Three classes provide factory methods to create formatters, and this is one. The others are ISOPeriodFormat and PeriodFormatterBuilder.

PeriodFormat is thread-safe and immutable, and the formatters it returns are as well.

Since:
1.0
Author:
Brian S O'Neill
See Also:
  • Constructor Details

    • PeriodFormat

      protected PeriodFormat()
      Constructor.
      Since:
      1.1 (previously private)
  • Method Details

    • getDefault

      public static PeriodFormatter getDefault()
      Gets the default formatter that outputs words in English.

      This calls wordBased(Locale) using a locale of ENGLISH.

      Returns:
      the formatter, not null
    • wordBased

      public static PeriodFormatter wordBased()
      Returns a word based formatter for the JDK default locale.

      This calls wordBased(Locale) using the default locale.

      Returns:
      the formatter, not null
      Since:
      2.0
    • wordBased

      public static PeriodFormatter wordBased(Locale locale)
      Returns a word based formatter for the specified locale.

      The words are configured in a resource bundle text file - org.joda.time.format.messages. This can be added to via the normal classpath resource bundle mechanisms.

      You can add your own translation by creating messages_.properties file and adding it to the org.joda.time.format.messages path.

      Simple example (1 -> singular suffix, not 1 -> plural suffix):

       PeriodFormat.space=\ 
       PeriodFormat.comma=,
       PeriodFormat.commandand=,and 
       PeriodFormat.commaspaceand=, and 
       PeriodFormat.commaspace=, 
       PeriodFormat.spaceandspace=\ and 
       PeriodFormat.year=\ year
       PeriodFormat.years=\ years
       PeriodFormat.month=\ month
       PeriodFormat.months=\ months
       PeriodFormat.week=\ week
       PeriodFormat.weeks=\ weeks
       PeriodFormat.day=\ day
       PeriodFormat.days=\ days
       PeriodFormat.hour=\ hour
       PeriodFormat.hours=\ hours
       PeriodFormat.minute=\ minute
       PeriodFormat.minutes=\ minutes
       PeriodFormat.second=\ second
       PeriodFormat.seconds=\ seconds
       PeriodFormat.millisecond=\ millisecond
       PeriodFormat.milliseconds=\ milliseconds
       

      Some languages contain more than two suffixes. You can use regular expressions for them. Here's an example using regular expression for English:

       PeriodFormat.space=\ 
       PeriodFormat.comma=,
       PeriodFormat.commandand=,and 
       PeriodFormat.commaspaceand=, and 
       PeriodFormat.commaspace=, 
       PeriodFormat.spaceandspace=\ and 
       PeriodFormat.regex.separator=%
       PeriodFormat.years.regex=1$%.*
       PeriodFormat.years.list=\ year%\ years
       PeriodFormat.months.regex=1$%.*
       PeriodFormat.months.list=\ month%\ months
       PeriodFormat.weeks.regex=1$%.*
       PeriodFormat.weeks.list=\ week%\ weeks
       PeriodFormat.days.regex=1$%.*
       PeriodFormat.days.list=\ day%\ days
       PeriodFormat.hours.regex=1$%.*
       PeriodFormat.hours.list=\ hour%\ hours
       PeriodFormat.minutes.regex=1$%.*
       PeriodFormat.minutes.list=\ minute%\ minutes
       PeriodFormat.seconds.regex=1$%.*
       PeriodFormat.seconds.list=\ second%\ seconds
       PeriodFormat.milliseconds.regex=1$%.*
       PeriodFormat.milliseconds.list=\ millisecond%\ milliseconds
       

      You can mix both approaches. Here's example for Polish ( "1 year, 2 years, 5 years, 12 years, 15 years, 21 years, 22 years, 25 years" translates to "1 rok, 2 lata, 5 lat, 12 lat, 15 lat, 21 lat, 22 lata, 25 lat"). Notice that PeriodFormat.day and PeriodFormat.days is used for day suffixes as there is no need for regular expressions:

       PeriodFormat.space=\ 
       PeriodFormat.comma=,
       PeriodFormat.commandand=,i 
       PeriodFormat.commaspaceand=, i 
       PeriodFormat.commaspace=, 
       PeriodFormat.spaceandspace=\ i 
       PeriodFormat.regex.separator=%
       PeriodFormat.years.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.years.list=\ rok%\ lata%\ lat
       PeriodFormat.months.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.months.list=\ miesiąc%\ miesiące%\ miesięcy
       PeriodFormat.weeks.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.weeks.list=\ tydzień%\ tygodnie%\ tygodni
       PeriodFormat.day=\ dzień
       PeriodFormat.days=\ dni
       PeriodFormat.hours.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.hours.list=\ godzina%\ godziny%\ godzin
       PeriodFormat.minutes.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.minutes.list=\ minuta%\ minuty%\ minut
       PeriodFormat.seconds.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.seconds.list=\ sekunda%\ sekundy%\ sekund
       PeriodFormat.milliseconds.regex=^1$%[0-9]*(?<!1)[2-4]$%[0-9]*
       PeriodFormat.milliseconds.list=\ milisekunda%\ milisekundy%\ milisekund
       

      Each PeriodFormat.<duration_field_type>.regex property stands for an array of regular expressions and is followed by a property PeriodFormat.<duration_field_type>.list holding an array of suffixes. PeriodFormat.regex.separator is used for splitting. See PeriodFormatterBuilder.appendSuffix(String[], String[]) for details.

      Available languages are English, Danish, Dutch, French, German, Japanese, Polish, Portuguese and Spanish.

      Parameters:
      locale - the locale
      Returns:
      the formatter, not null
      Since:
      2.0, regex since 2.5