La siguiente es una clase de utilidad que le da el formato de fecha sin año. Enumero todos los formatos de fecha conocidos por Java usando el siguiente código.
Locale[] locales = SimpleDateFormat.getAvailableLocales();
for (int i = 0; i < locales.length; i++) {
Locale locale = locales[i];
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL, locale);
}
Y a continuación, extraiga manualmente la pieza del año. Devuelve dos sabores de formato de fecha, normal y abreviado, es decir, lunes por, 18 de de marzo de vs Lun Mar 18
public class DateFormatWithoutYear {
private static Map<String, String> formats = new HashMap<String, String>();
private static String DEFAULT_FORMAT = "EEEE, d MMMM";
static {
formats.put("_af", "EEEE dd MMMM");
formats.put("_am", "EEEE, d MMMM");
formats.put("_az", "EEEE, d, MMMM");
formats.put("_be", "EEEE, d MMMM");
formats.put("_bg", "dd MMMM, EEEE");
formats.put("BG_bg", "dd MMMM, EEEE");
formats.put("_ca", "EEEE d MMMM");
formats.put("ES_ca", "EEEE d MMMM");
formats.put("_cs", "EEEE, d. MMMM");
formats.put("CZ_cs", "EEEE, d. MMMM");
formats.put("_da", "EEEE 'den' d. MMMM");
formats.put("DK_da", "EEEE 'den' d. MMMM");
formats.put("_de", "EEEE, d. MMMM");
formats.put("AT_de", "EEEE, dd. MMMM");
formats.put("BE_de", "EEEE, d. MMMM");
formats.put("CH_de", "EEEE, d. MMMM");
formats.put("DE_de", "EEEE, d. MMMM");
formats.put("LI_de", "EEEE, d. MMMM");
formats.put("LU_de", "EEEE, d. MMMM");
formats.put("_el", "EEEE, d MMMM");
formats.put("GR_el", "EEEE, d MMMM");
formats.put("_en", "EEEE, MMMM d");
formats.put("AU_en", "EEEE, d MMMM");
formats.put("BE_en", "EEEE d MMMM");
formats.put("BW_en", "EEEE dd MMMM");
formats.put("BZ_en", "EEEE, MMMM d");
formats.put("CA_en", "EEEE, d MMMM");
formats.put("GB_en", "EEEE, d MMMM");
formats.put("HK_en", "EEEE, d MMMM");
formats.put("IE_en", "EEEE d MMMM");
formats.put("IN_en", "EEEE d MMMM");
formats.put("JM_en", "EEEE, MMMM d");
formats.put("MH_en", "EEEE, MMMM d");
formats.put("MT_en", "EEEE, d MMMM");
formats.put("NA_en", "EEEE, MMMM d");
formats.put("NZ_en", "EEEE, d MMMM");
formats.put("PH_en", "EEEE, MMMM d");
formats.put("PK_en", "EEEE, MMMM d");
formats.put("RH_en", "EEEE dd MMMM");
formats.put("SG_en", "EEEE, d MMMM");
formats.put("TT_en", "EEEE, MMMM d");
formats.put("US_en", "EEEE, MMMM d");
formats.put("VI_en", "EEEE, MMMM d");
formats.put("ZA_en", "EEEE dd MMMM");
formats.put("ZW_en", "EEEE dd MMMM");
formats.put("_es", "EEEE d 'de' MMMM");
formats.put("AR_es", "EEEE d 'de' MMMM");
formats.put("BO_es", "EEEE d 'de' MMMM");
formats.put("CL_es", "EEEE d 'de' MMMM");
formats.put("CO_es", "EEEE d 'de' MMMM");
formats.put("CR_es", "EEEE d 'de' MMMM");
formats.put("DO_es", "EEEE d 'de' MMMM");
formats.put("EC_es", "EEEE d 'de' MMMM");
formats.put("ES_es", "EEEE d 'de' MMMM");
formats.put("GT_es", "EEEE d 'de' MMMM");
formats.put("HN_es", "EEEE dd 'de' MMMM");
formats.put("MX_es", "EEEE d 'de' MMMM");
formats.put("NI_es", "EEEE d 'de' MMMM");
formats.put("PA_es", "EEEE d 'de' MMMM");
formats.put("PE_es", "EEEE d 'de' MMMM");
formats.put("PR_es", "EEEE d 'de' MMMM");
formats.put("PY_es", "EEEE d 'de' MMMM");
formats.put("SV_es", "EEEE d 'de' MMMM");
formats.put("US_es", "EEEE d 'de' MMMM");
formats.put("UY_es", "EEEE d 'de' MMMM");
formats.put("VE_es", "EEEE d 'de' MMMM");
formats.put("_et", "EEEE, d. MMMM");
formats.put("_eu", "EEEE, MMMM'ren' dd'a'");
formats.put("_fi", "cccc, d. MMMM");
formats.put("FI_fi", "cccc, d. MMMM");
formats.put("_fil", "EEEE, MMMM dd");
formats.put("PH_fil", "EEEE, MMMM dd");
formats.put("_fr", "EEEE d MMMM");
formats.put("BE_fr", "EEEE d MMMM");
formats.put("CA_fr", "EEEE d MMMM");
formats.put("CH_fr", "EEEE, d MMMM");
formats.put("FR_fr", "EEEE d MMMM");
formats.put("LU_fr", "EEEE d MMMM");
formats.put("MC_fr", "EEEE d MMMM");
formats.put("_gl", "EEEE dd MMMM");
formats.put("_iw", "EEEE, d בMMMM");
formats.put("IL_iw", "EEEE, d בMMMM");
formats.put("_hi", "EEEE, d MMMM");
formats.put("IN_hi", "EEEE, d MMMM");
formats.put("_hr", "EEEE, d. MMMM");
formats.put("HR_hr", "EEEE, d. MMMM");
formats.put("_hu", "MMMM d., EEEE");
formats.put("HU_hu", "MMMM d., EEEE");
formats.put("_hy", "EEEE, MMMM d");
formats.put("_in", "EEEE, dd MMMM");
formats.put("ID_in", "EEEE, dd MMMM");
formats.put("_it", "EEEE d MMMM");
formats.put("CH_it", "EEEE, d MMMM");
formats.put("IT_it", "EEEE d MMMM");
formats.put("_ja", "M月d日EEEE");
formats.put("JP_ja", "M月d日EEEE");
formats.put("_ka", "EEEE, MMMM dd");
formats.put("_kk", "EEEE, d MMMM");
formats.put("_ko", "M월 d일 EEEE");
formats.put("KR_ko", "M월 d일 EEEE");
formats.put("_lt", "'m'. MMMM d 'd'., EEEE");
formats.put("LT_lt", "'m'. MMMM d 'd'., EEEE");
formats.put("_lv", "EEEE, d. MMMM");
formats.put("LV_lv", "EEEE, d. MMMM");
formats.put("_mk", "EEEE, dd MMMM");
formats.put("_ms", "EEEE, d MMMM");
formats.put("_nb", "EEEE d. MMMM");
formats.put("NO_nb", "EEEE d. MMMM");
formats.put("_nl", "EEEE d MMMM");
formats.put("BE_nl", "EEEE d MMMM");
formats.put("NL_nl", "EEEE d MMMM");
formats.put("_pl", "EEEE, d MMMM");
formats.put("PL_pl", "EEEE, d MMMM");
formats.put("_ps", "EEEE د MMMM d");
formats.put("_pt", "EEEE, d 'de' MMMM");
formats.put("BR_pt", "EEEE, d 'de' MMMM");
formats.put("PT_pt", "EEEE, d 'de' MMMM");
formats.put("_rm", "EEEE, d. MMMM");
formats.put("_ro", "EEEE, d MMMM");
formats.put("RO_ro", "EEEE, d MMMM");
formats.put("_ru", "EEEE, d MMMM");
formats.put("RU_ru", "EEEE, d MMMM");
formats.put("UA_ru", "EEEE, d MMMM");
formats.put("_sk", "EEEE, d. MMMM");
formats.put("SK_sk", "EEEE, d. MMMM");
formats.put("_sl", "EEEE, dd. MMMM");
formats.put("SI_sl", "EEEE, dd. MMMM");
formats.put("_sr", "EEEE, dd. MMMM");
formats.put("BA_sr", "EEEE, dd. MMMM");
formats.put("CS_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("CYRL_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("LATN_sr", "EEEE, dd. MMMM");
formats.put("ME_sr", "EEEE, dd. MMMM");
formats.put("RS_sr", "EEEE, dd. MMMM");
formats.put("YU_sr", "EEEE, dd. MMMM");
formats.put("_sv", "EEEE'en' 'den' d:'e' MMMM");
formats.put("FI_sv", "EEEE'en' 'den' d:'e' MMMM");
formats.put("SE_sv", "EEEE'en' 'den' d:'e' MMMM");
formats.put("_sw", "EEEE, d MMMM");
formats.put("_th", "EEEEที่ d MMMM G");
formats.put("TH_th", "EEEEที่ d MMMM G");
formats.put("_tr", "d MMMM EEEE");
formats.put("TR_tr", "d MMMM EEEE");
formats.put("_uk", "EEEE, d MMMM");
formats.put("UA_uk", "EEEE, d MMMM");
formats.put("_uz", "EEEE, MMMM dd");
formats.put("_vi", "EEEE, 'ngày' dd MMMM");
formats.put("VN_vi", "EEEE, 'ngày' dd MMMM");
formats.put("_zh", "M月d日EEEE");
formats.put("CN_zh", "M月d日EEEE");
formats.put("HK_zh", "M月d日EEEE");
formats.put("HANS_zh", "M月d日EEEE");
formats.put("HANS_zh", "M月d日EEEE");
formats.put("HANS_zh", "M月d日EEEE");
formats.put("HANS_zh", "M月d日EEEE");
formats.put("HANT_zh", "M月d日EEEE");
formats.put("HANT_zh", "M月d日EEEE");
formats.put("HANT_zh", "MM月dd日EEEE");
formats.put("HANT_zh", "M月d日EEEE");
formats.put("MO_zh", "MM月dd日EEEE");
formats.put("SG_zh", "M月d日EEEE");
formats.put("TW_zh", "M月d日EEEE");
formats.put("_zu", "EEEE dd MMMM");
}
public static String getLongFormatWithoutYear(Locale locale) {
if (locale != null) {
String key = locale.getCountry() + "_" + locale.getLanguage();
String format = formats.get(key);
if (format != null) {
return format;
}
}
return DEFAULT_FORMAT;
}
public static String getShortFormatWithoutYear(Locale locale) {
String longFormat = getLongFormatWithoutYear(locale);
return longFormat.replaceAll("E+", "E").replaceAll("MMMM", "MMM");
}
}
¿cómo está declarando la fecha? ¿Estás usando SimpleDateFormat? – Albinoswordfish
Tengo un número de milisegundos desde época y quiero convertir esto a algo así como "23/09". – fhucho
Ah, entonces desea que la fecha se formatee de acuerdo con el formato predeterminado para la configuración regional dada o predeterminada, pero con la porción del año eliminada. Entonces '23 de septiembre' se vería como '09/23' en una localidad, pero' 23/09' en otra. Me doy cuenta de que eso es esencialmente lo que dices en tu pregunta, pero creo que el ejemplo me desanimó. –