1

I want to format a LocalDate as a localized day and month, without a year.

I can't figure how to create such formatter. This:

val formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)

produces e.g. 7/20/17, and the longer versions also include a year.

hrach
  • 2,443
  • 2
  • 26
  • 37
  • https://docs.oracle.com/javase/8/docs/api/java/time/format/FormatStyle.html#SHORT – Naman Sep 26 '17 at 14:07
  • 2
    Use a dedicated pattern. Store the pattern to use, for each locale, as an i18n message in your resource bundle. – JB Nizet Sep 26 '17 at 14:08
  • The example shows it includes a year. – hrach Sep 26 '17 at 14:09
  • 2
    The formatting patterns you desire are not in the JDK. They are in CLDR however, so if you wanted you could parse that to get the formats by locale. – JodaStephen Sep 26 '17 at 14:16
  • By the way, you may find the [`MonthDay`](http://download.java.net/java/jdk9/docs/api/java/time/MonthDay.html) class handy in your work. But it does not support automatically localized formatting unfortunately. – Basil Bourque Sep 26 '17 at 14:40
  • Please have a look at [the class AnnualDate in Time4J](http://time4j.net/javadoc-en/net/time4j/xml/AnnualDate.html). Localization support is available and described in the javadoc, and you can convert it to `MonthDay` via `toTemporalAccessor()`. – Meno Hochschild Sep 26 '17 at 15:03

1 Answers1

4

I guess your problem is that there is no pre-defined style for that. You can use a custom pattern, but please note that you will have to take care of localization yourself.

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd");

        System.out.println(LocalDateTime.now().format(formatter));

Or you could infer the pattern from the short style like that:

public static DateTimeFormatter dayMonthFormatter(Locale locale, FormatStyle style) {
    String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(style, null, IsoChronology.INSTANCE,
            locale);

    // now remove the year part and everything next to it
    // that is not day or month related plus one special case
    // of literal which contains a "d".
    pattern = pattern.replaceAll("((' de ')|[^dM]*)y[^dM]*", "");

    return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter(locale);
}

Will produce these results:

#####  FormatStyle: SHORT ######
12/31 ()
31/12 (ar_AE)
31/12 (ar_JO)
31/12 (ar_SY)
31.12 (hr_HR)
31/12 (fr_BE)
12/31 (es_PA)
31/12 (mt_MT)
31/12 (es_VE)
31.12 (bg)
12/31 (zh_TW)
31/12 (it)
12. 31 (ko)
31.12 (uk)
31.12 (lv)
31-12 (da_DK)
12-31 (es_PR)
31/12 (vi_VN)
12/31 (en_US)
31.12 (sr_ME)
12-31 (sv_SE)
31-12 (es_BO)
31/12 (en_SG)
31/12 (ar_BH)
31-12 (pt)
31/12 (ar_SA)
31.12 (sk)
31/12 (ar_YE)
31/12 (hi_IN)
12/31 (ga)
31/12 (en_MT)
31.12 (fi_FI)
31.12 (et)
12-31 (sv)
31.12 (cs)
31.12 (sr_BA_#Latn)
31/12 (el)
31.12 (uk_UA)
12.31. (hu)
31.12 (fr_CH)
12/31 (in)
31/12 (es_AR)
31/12 (ar_EG)
12/31 (ja_JP_JP_#u-ca-japanese)
12-31 (es_SV)
31/12 (pt_BR)
31.12 (be)
31.12 (is_IS)
31.12 (cs_CZ)
31/12 (es)
31.12 (pl_PL)
31.12 (tr)
31/12 (ca_ES)
31.12 (sr_CS)
31/12 (ms_MY)
12.31 (hr)
12.31 (lt)
31/12 (es_ES)
31/12 (es_CO)
31.12 (bg_BG)
12-31 (sq)
31/12 (fr)
12/31 (ja)
12-31 (sr_BA)
31.12 (is)
31/12 (es_PY)
31.12 (de)
31/12 (es_EC)
12/31 (es_US)
31/12 (ar_SD)
12/31 (en)
31.12 (ro_RO)
12/31 (en_PH)
31/12 (ca)
31/12 (ar_TN)
31.12 (sr_ME_#Latn)
31/12 (es_GT)
31.12 (sl)
12. 31 (ko_KR)
31/12 (el_CY)
31/12 (es_MX)
31.12 (ru_RU)
12-31 (es_HN)
12月31日 (zh_HK)
31.12 (no_NO_NY)
12.31. (hu_HU)
31/12 (th_TH)
31/12 (ar_IQ)
31-12 (es_CL)
31.12 (fi)
31/12 (ar_MA)
31/12 (ga_IE)
31.12 (mk)
31.12 (tr_TR)
31.12 (et_EE)
31/12 (ar_QA)
31.12 (sr__#Latn)
31-12 (pt_PT)
31/12 (fr_LU)
31/12 (ar_OM)
31/12 (th)
12-31 (sq_AL)
31/12 (es_DO)
31/12 (es_CU)
31/12 (ar)
31.12 (ru)
31/12 (en_NZ)
31.12 (sr_RS)
31.12 (de_CH)
31/12 (es_UY)
12/31 (ms)
31/12 (el_GR)
31/12 (iw_IL)
12/31 (en_ZA)
31/12 (th_TH_TH_#u-nu-thai)
12/31 (hi)
31/12 (fr_FR)
31.12 (de_AT)
31-12 (nl)
31.12 (no_NO)
31/12 (en_AU)
31/12 (vi)
31-12 (nl_NL)
12-31 (fr_CA)
31.12 (lv_LV)
31.12 (de_LU)
31/12 (es_CR)
31/12 (ar_KW)
31.12 (sr)
31/12 (ar_LY)
31/12 (mt)
31.12 (it_CH)
31-12 (da)
31.12 (de_DE)
31/12 (ar_DZ)
31.12 (sk_SK)
12.31 (lt_LT)
31/12 (it_IT)
31/12 (en_IE)
31/12 (zh_SG)
31.12 (ro)
31/12 (en_CA)
31/12 (nl_BE)
31.12 (no)
12-31 (pl)
12-31 (zh_CN)
12/31 (ja_JP)
31.12 (de_GR)
31.12 (sr_RS_#Latn)
31/12 (iw)
31/12 (en_IN)
31/12 (ar_LB)
12-31 (es_NI)
12-31 (zh)
31.12 (mk_MK)
31.12 (be_BY)
31.12 (sl_SI)
31/12 (es_PE)
31/12 (in_ID)
31/12 (en_GB)
#####  FormatStyle: MEDIUM ######
Dec 31 ()
31/12 (ar_AE)
31/12 (ar_JO)
31/12 (ar_SY)
31.12 (hr_HR)
31-déc. (fr_BE)
12/31 (es_PA)
31 Diċ (mt_MT)
31/12 (es_VE)
31.12 (bg)
12/31 (zh_TW)
31-dic (it)
12. 31 (ko)
31 груд. (uk)
31.12 (lv)
31-12 (da_DK)
12-31 (es_PR)
31-12 (vi_VN)
Dec 31 (en_US)
31.12 (sr_ME)
dec-31 (sv_SE)
31-12 (es_BO)
31 Dec (en_SG)
31/12 (ar_BH)
31/dez (pt)
31/12 (ar_SA)
31.12 (sk)
31/12 (ar_YE)
31 दिसंबर (hi_IN)
Noll 31 (ga)
31 Dec (en_MT)
31.12 (fi_FI)
31.12 (et)
dec-31 (sv)
31.12 (cs)
31.12 (sr_BA_#Latn)
31 Δεκ (el)
31 груд. (uk_UA)
12.31. (hu)
31 déc. (fr_CH)
Des 31 (in)
31/12 (es_AR)
31/12 (ar_EG)
12/31 (ja_JP_JP_#u-ca-japanese)
12-31 (es_SV)
31/12 (pt_BR)
31.12 (be)
31.12 (is_IS)
31.12 (cs_CZ)
31-dic (es)
12-31 (pl_PL)
31.Ara (tr)
31/12 (ca_ES)
31.12 (sr_CS)
31 Disember (ms_MY)
12.31 (hr)
12-31 (lt)
31-dic (es_ES)
31/12 (es_CO)
31.12 (bg_BG)
12-31 (sq)
31 déc. (fr)
12/31 (ja)
12-31 (sr_BA)
31.12 (is)
31/12 (es_PY)
31.12 (de)
31/12 (es_EC)
dic 31 (es_US)
31/12 (ar_SD)
Dec 31 (en)
31.12 (ro_RO)
12 31 (en_PH)
31/12 (ca)
31/12 (ar_TN)
31.12 (sr_ME_#Latn)
31/12 (es_GT)
31.12 (sl)
12. 31 (ko_KR)
31 Δεκ (el_CY)
31/12 (es_MX)
31.12 (ru_RU)
12-31 (es_HN)
12月31日 (zh_HK)
31.des (no_NO_NY)
12.31. (hu_HU)
31 ธ.ค. (th_TH)
31/12 (ar_IQ)
31-12 (es_CL)
31.12 (fi)
31/12 (ar_MA)
31 Noll (ga_IE)
31.12 (mk)
31.Ara (tr_TR)
31.12 (et_EE)
31/12 (ar_QA)
31.12 (sr__#Latn)
31/dez (pt_PT)
31 déc. (fr_LU)
31/12 (ar_OM)
31 ธ.ค. (th)
12-31 (sq_AL)
31/12 (es_DO)
31-dic (es_CU)
31/12 (ar)
31.12 (ru)
31/12 (en_NZ)
31.12 (sr_RS)
31.12 (de_CH)
31/12 (es_UY)
Dis 31 (ms)
31 Δεκ (el_GR)
31/12 (iw_IL)
31 Dec (en_ZA)
31 ธ.ค. (th_TH_TH_#u-nu-thai)
Dec 31 (hi)
31 déc. (fr_FR)
31.12 (de_AT)
31-dec (nl)
31.des (no_NO)
31/12 (en_AU)
31-12 (vi)
31-dec (nl_NL)
12-31 (fr_CA)
31.12 (lv_LV)
31.12 (de_LU)
31/12 (es_CR)
31/12 (ar_KW)
31.12 (sr)
31/12 (ar_LY)
31 Diċ (mt)
31-dic (it_CH)
31-12 (da)
31.12 (de_DE)
31/12 (ar_DZ)
31.12 (sk_SK)
12-31 (lt_LT)
31-dic (it_IT)
31-Dec (en_IE)
31-十二月 (zh_SG)
31.12 (ro)
31-Dec (en_CA)
31-dec (nl_BE)
31.des (no)
12-31 (pl)
12-31 (zh_CN)
12/31 (ja_JP)
31.12 (de_GR)
31.12 (sr_RS_#Latn)
31/12 (iw)
31 Dec (en_IN)
31/12 (ar_LB)
12-31 (es_NI)
12-31 (zh)
31.12 (mk_MK)
31.12 (be_BY)
31.12 (sl_SI)
31/12 (es_PE)
31 Des (in_ID)
31-Dec (en_GB)
#####  FormatStyle: LONG ######
December 31 ()
31 ديسمبر (ar_AE)
31 كانون الأول (ar_JO)
31 كانون الأول (ar_SY)
prosinca 31 (hr_HR)
31 décembre (fr_BE)
31 de diciembre (es_PA)
31 ta’ Diċembru (mt_MT)
31 de diciembre (es_VE)
31 Декември (bg)
12月31日 (zh_TW)
31 dicembre (it)
12월 31일 (일) (ko)
31 грудня (uk)
31 decembris (lv)
31. december (da_DK)
31 de diciembre (es_PR)
31 tháng 12 (vi_VN)
December 31 (en_US)
31.12 (sr_ME)
den 31 december (sv_SE)
31 de diciembre (es_BO)
31 December (en_SG)
31 ديسمبر (ar_BH)
31 de Dezembro (pt)
31 ديسمبر (ar_SA)
decembra 31 (sk)
31 ديسمبر (ar_YE)
31 दिसंबर (hi_IN)
Nollaig 31 (ga)
31 December (en_MT)
31. joulukuuta (fi_FI)
pühapäev, 31. detsember (et)
den 31 december (sv)
31. prosince (cs)
31. decembar (sr_BA_#Latn)
31 Δεκεμβρίου (el)
31 грудня (uk_UA)
december 31. (hu)
31. décembre (fr_CH)
Desember 31 (in)
31 de diciembre (es_AR)
31 ديسمبر (ar_EG)
12/31 (ja_JP_JP_#u-ca-japanese)
31 de diciembre (es_SV)
31 de Dezembro (pt_BR)
нядзеля, 31, снежня (be)
31. desember (is_IS)
31. prosince (cs_CZ)
31 de diciembre (es)
31 grudnia (pl_PL)
31 Aralık (tr)
31 / de desembre (ca_ES)
31.12 (sr_CS)
31 Disember (ms_MY)
prosinca 31 (hr)
gruodis 31 (lt)
31 de diciembre (es_ES)
31 de diciembre (es_CO)
31 Декември (bg_BG)
12-31 (sq)
31 décembre (fr)
12/31 (ja)
31. децембар (sr_BA)
31. desember (is)
31 de diciembre (es_PY)
31. Dezember (de)
31 de diciembre (es_EC)
31 de diciembre (es_US)
31 ديسمبر (ar_SD)
December 31 (en)
31 decembrie (ro_RO)
December 31 (en_PH)
31 / de desembre (ca)
31 ديسمبر (ar_TN)
31.12 (sr_ME_#Latn)
31 de diciembre (es_GT)
31. december (sl)
12월 31일 (일) (ko_KR)
31 Δεκέμβριος (el_CY)
31 de diciembre (es_MX)
31 декабря (ru_RU)
31 de diciembre (es_HN)
12月31日 星期日 (zh_HK)
31. desember (no_NO_NY)
december 31. (hu_HU)
31 ธันวาคม (th_TH)
31 ديسمبر (ar_IQ)
31 de diciembre (es_CL)
31. joulukuuta (fi)
31 ديسمبر (ar_MA)
31 Nollaig (ga_IE)
31, декември (mk)
31 Aralık (tr_TR)
pühapäev, 31. detsember (et_EE)
31 ديسمبر (ar_QA)
31. decembar (sr__#Latn)
31 de Dezembro (pt_PT)
31 décembre (fr_LU)
31 ديسمبر (ar_OM)
31 ธันวาคม (th)
12-31 (sq_AL)
31 de diciembre (es_DO)
31 de diciembre (es_CU)
31 ديسمبر (ar)
31 декабря (ru)
31 December (en_NZ)
31.12 (sr_RS)
31. Dezember (de_CH)
31 de diciembre (es_UY)
Disember 31 (ms)
31 Δεκεμβρίου (el_GR)
31 דצמבר (iw_IL)
31 December (en_ZA)
31 ธันวาคม (th_TH_TH_#u-nu-thai)
December 31 (hi)
31 décembre (fr_FR)
31. Dezember (de_AT)
31 december (nl)
31. desember (no_NO)
31 December (en_AU)
31 tháng 12 (vi)
31 december (nl_NL)
31 décembre (fr_CA)
31 decembris (lv_LV)
31. Dezember (de_LU)
31 de diciembre (es_CR)
31 ديسمبر (ar_KW)
31.12 (sr)
31 ديسمبر (ar_LY)
31 ta’ Diċembru (mt)
31. dicembre (it_CH)
31. december (da)
31. Dezember (de_DE)
31 ديسمبر (ar_DZ)
decembra 31 (sk_SK)
gruodis 31 (lt_LT)
31 dicembre (it_IT)
31 December (en_IE)
31 十二月 (zh_SG)
31 decembrie (ro)
December 31 (en_CA)
31 december (nl_BE)
31. desember (no)
31 grudnia (pl)
12月31日 (zh_CN)
12/31 (ja_JP)
31. Dezember (de_GR)
31. decembar (sr_RS_#Latn)
31 דצמבר (iw)
31 December (en_IN)
31 كانون الأول (ar_LB)
31 de diciembre (es_NI)
12月31日 (zh)
31, декември (mk_MK)
нядзеля, 31, снежня (be_BY)
31. december (sl_SI)
31 de diciembre (es_PE)
31 Desember (in_ID)
31 December (en_GB)
#####  FormatStyle: FULL ######
Sunday, December 31 ()
31 ديسمبر (ar_AE)
31 كانون الأول (ar_JO)
31 كانون الأول (ar_SY)
prosinca 31 (hr_HR)
dimanche 31 décembre (fr_BE)
domingo 31 de diciembre (es_PA)
Il-Ħadd, 31 ta’ Diċembru (mt_MT)
domingo 31 de diciembre (es_VE)
31 Декември (bg)
12月31日 星期日 (zh_TW)
domenica 31 dicembre (it)
12월 31일 일요일 (ko)
неділя, 31 грудня (uk)
31 decembris (lv)
31. december (da_DK)
domingo 31 de diciembre (es_PR)
31 tháng mười hai (vi_VN)
Sunday, December 31 (en_US)
недеља, 31.децембар (sr_ME)
den 31 december (sv_SE)
domingo 31 de diciembre (es_BO)
Sunday, 31 December (en_SG)
31 ديسمبر (ar_BH)
Domingo, 31 de Dezembro (pt)
31 ديسمبر (ar_SA)
decembra 31 (sk)
31 ديسمبر (ar_YE)
रविवार, 31 दिसंबर (hi_IN)
Nollaig 31 (ga)
Sunday, 31 December (en_MT)
sunnuntai, 31. joulukuuta (fi_FI)
pühapäev, 31. detsember (et)
den 31 december (sv)
Neděle, 31. prosince (cs)
nedelja, 31. decembar (sr_BA_#Latn)
Κυριακή, 31 Δεκεμβρίου (el)
неділя, 31 грудня (uk_UA)
december 31. (hu)
dimanche, 31. décembre (fr_CH)
Desember 31 (in)
domingo 31 de diciembre (es_AR)
31 ديسمبر (ar_EG)
12月31日 (ja_JP_JP_#u-ca-japanese)
domingo 31 de diciembre (es_SV)
Domingo, 31 de Dezembro (pt_BR)
нядзеля, 31, снежня (be)
31. desember (is_IS)
Neděle, 31. prosince (cs_CZ)
domingo 31 de diciembre (es)
niedziela, 31 grudnia (pl_PL)
31 Aralık (tr)
diumenge, 31 / de desembre (ca_ES)
недеља, 31.децембар (sr_CS)
Ahad 31 Dis (ms_MY)
prosinca 31 (hr)
gruodis 31 (lt)
domingo 31 de diciembre (es_ES)
domingo 31 de diciembre (es_CO)
31 Декември (bg_BG)
12-31 (sq)
dimanche 31 décembre (fr)
12月31日 (ja)
недеља, 31. децембар (sr_BA)
31. desember (is)
domingo 31 de diciembre (es_PY)
Sonntag, 31. Dezember (de)
domingo 31 de diciembre (es_EC)
domingo 31 de diciembre (es_US)
31 ديسمبر (ar_SD)
Sunday, December 31 (en)
31 decembrie (ro_RO)
Sunday, December 31 (en_PH)
diumenge, 31 / de desembre (ca)
31 ديسمبر (ar_TN)
nedelja, 31. decembar (sr_ME_#Latn)
domingo 31 de diciembre (es_GT)
Nedelja, 31. december (sl)
12월 31일 일요일 (ko_KR)
Κυριακή, 31 Δεκέμβριος (el_CY)
domingo 31 de diciembre (es_MX)
31 декабря (ru_RU)
domingo 31 de diciembre (es_HN)
12月31日 星期日 (zh_HK)
31. desember (no_NO_NY)
december 31. (hu_HU)
วันอาทิตย์ที่ 31 ธันวาคม (th_TH)
31 ديسمبر (ar_IQ)
domingo 31 de diciembre (es_CL)
sunnuntai, 31. joulukuuta (fi)
31 ديسمبر (ar_MA)
Dé Domhnaigh 31 Nollaig (ga_IE)
недела, 31, декември (mk)
31 Aralık (tr_TR)
pühapäev, 31. detsember (et_EE)
31 ديسمبر (ar_QA)
nedelja, 31. decembar (sr__#Latn)
Domingo, 31 de Dezembro (pt_PT)
dimanche 31 décembre (fr_LU)
31 ديسمبر (ar_OM)
วันอาทิตย์ที่ 31 ธันวาคม (th)
12-31 (sq_AL)
domingo 31 de diciembre (es_DO)
domingo 31 de diciembre (es_CU)
31 ديسمبر (ar)
31 декабря (ru)
Sunday, 31 December (en_NZ)
недеља, 31.децембар (sr_RS)
Sonntag, 31. Dezember (de_CH)
domingo 31 de diciembre (es_UY)
Disember 31 (ms)
Κυριακή, 31 Δεκεμβρίου (el_GR)
יום ראשון 31 דצמבר (iw_IL)
Sunday 31 December (en_ZA)
วันอาทิตย์ที่ 31 ธันวาคม (th_TH_TH_#u-nu-thai)
Sunday, December 31 (hi)
dimanche 31 décembre (fr_FR)
Sonntag, 31. Dezember (de_AT)
zondag 31 december (nl)
31. desember (no_NO)
Sunday, 31 December (en_AU)
31 tháng mười hai (vi)
zondag 31 december (nl_NL)
dimanche 31 décembre (fr_CA)
31 decembris (lv_LV)
Sonntag, 31. Dezember (de_LU)
domingo 31 de diciembre (es_CR)
31 ديسمبر (ar_KW)
недеља, 31.децембар (sr)
31 ديسمبر (ar_LY)
Il-Ħadd, 31 ta’ Diċembru (mt)
domenica, 31. dicembre (it_CH)
31. december (da)
Sonntag, 31. Dezember (de_DE)
31 ديسمبر (ar_DZ)
decembra 31 (sk_SK)
gruodis 31 (lt_LT)
domenica 31 dicembre (it_IT)
31 December (en_IE)
31 十二月 (zh_SG)
31 decembrie (ro)
Sunday, December 31 (en_CA)
zondag 31 december (nl_BE)
31. desember (no)
niedziela, 31 grudnia (pl)
12月31日 星期日 (zh_CN)
12月31日 (ja_JP)
Sonntag, 31. Dezember (de_GR)
nedelja, 31. decembar (sr_RS_#Latn)
יום ראשון 31 דצמבר (iw)
Sunday, 31 December (en_IN)
31 كانون الأول (ar_LB)
domingo 31 de diciembre (es_NI)
12月31日 星期日 (zh)
недела, 31, декември (mk_MK)
нядзеля, 31, снежня (be_BY)
Nedelja, 31. december (sl_SI)
domingo 31 de diciembre (es_PE)
Minggu 31 Desember (in_ID)
Sunday, 31 December (en_GB)
Mick
  • 954
  • 7
  • 17
  • And this answer is already wrong for Chinese... and for English, it is a difference between UK and US. – Meno Hochschild Sep 26 '17 at 15:58
  • 2
    There's no need to mix old API's `SimpleDateFormat` and new API's `DateTimeFormatter`. You can get the date-only pattern strings with `DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT, null, IsoChronology.INSTANCE, locale)` –  Sep 26 '17 at 16:58
  • Thanks Hugo, I changed it to only use the new API. @Meno: How can the results be wrong? It's just one possible way of showing day and month while respecting the locale with no configuration needed. – Mick Sep 27 '17 at 07:41
  • Another detail is that, for some locales, even the short pattern contains more than 2 digits for the year (`yyyy`). Anyway, manipulating those hardcoded patterns is not so straightforward as we think (so is date/time handling in general) –  Sep 27 '17 at 16:45
  • Thanks Hugo! Added 4-digit support to the example code. – Mick Sep 28 '17 at 08:29
  • The result for Chinese is wrong because of missing extra literals. – Meno Hochschild Sep 30 '17 at 14:32
  • The chinese SHORT date style is `17-09-27`. This example just drops the year. This is not wrong. You are probably thinking of the longer styles. – Mick Oct 02 '17 at 09:34
  • For Hong Kong locale it fails: `DateTimeFormatterBuilder.getLocalizedDateTimePattern(FormatStyle.SHORT, null, IsoChronology.INSTANCE, new Locale("zh", "HK"))` returns `yy'年'M'月'd'日'`. Using your `replace`, the result is `年'M'月'd'日'` - note that the first literal is not escaped anymore (the first `'` is removed), so when you try to create a `DateTimeFormatter`, it throws an exception (*"java.lang.IllegalArgumentException: Pattern ends with an incomplete string literal: 年'M'月'd'日'"*). But it seems to be the only locale with literals in the short style (not an issue if you never use this locale) –  Oct 02 '17 at 17:32
  • 1
    Thanks again, Hugo! After another code change, it even seems to make more sense now. – Mick Oct 04 '17 at 15:09
  • 1
    What is the point of adding (' de ') ? I tried to print all localized patterns and couldn't find anything containing it. – android_dev Jul 01 '20 at 07:48