Class PeriodFormat
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic PeriodFormatter
Gets the default formatter that outputs words in English.static PeriodFormatter
Returns a word based formatter for the JDK default locale.static PeriodFormatter
Returns a word based formatter for the specified locale.
-
Constructor Details
-
PeriodFormat
protected PeriodFormat()Constructor.- Since:
- 1.1 (previously private)
-
-
Method Details
-
getDefault
Gets the default formatter that outputs words in English.This calls
wordBased(Locale)
using a locale ofENGLISH
.- Returns:
- the formatter, not null
-
wordBased
Returns a word based formatter for the JDK default locale.This calls
wordBased(Locale)
using thedefault locale
.- Returns:
- the formatter, not null
- Since:
- 2.0
-
wordBased
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
-