Java 如何删除DateFollower区域设置中的年份?

Java 如何删除DateFollower区域设置中的年份?,java,android,simpledateformat,Java,Android,Simpledateformat,我使用DateFormat显示日期和月份。DateFormat支持中、长、满三种格式,均为一年。我想从这段代码中删除year,我该如何实现这一点 SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.LONG, locale); sdf.applyPattern(sdf.toPattern().replaceAll("[^\\p{Alpha}]*y+[^\\p{Alpha}]*", ""))

我使用DateFormat显示日期和月份。DateFormat支持中、长、满三种格式,均为一年。我想从这段代码中删除year,我该如何实现这一点

SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.LONG, locale);
sdf.applyPattern(sdf.toPattern().replaceAll("[^\\p{Alpha}]*y+[^\\p{Alpha}]*", ""));
但我在某些区域设置中遇到了一个错误,如:

博乌中国:སྤྱི་ལོ་嗯འི་ཙེས་Dད

vi:‘Ngáy’dd’tháNg‘MM’năm’y

这是我的错


您可以使用SimpleDataFormat:

Date-Date=新日期();
java.text.simpleDataFormat df=新java.text.simpleDataFormat(“MM/dd”);
字符串dateString=df.format(日期)

输出:


01/21

尝试以下代码

String shortDate = "dd.MM";
String mediumDate = "MMM dd";
String longDate = "MMMM dd";
String fullDate = "EEEE, MMMM dd";
    
Locale locale = new Locale("EN"); 
DateFormat df = new SimpleDateFormat(fullDate, locale); \\Use the required format here
String formattedDate = df.format(new Date());
我已经删除了年份部分并创建了自定义等效项

DateFormat.SHORT
as
shortDate

DateFormat.MEDIUM
as
mediumDate

DateFormat.LONG
as
longDate

DateFormat.FULL
as
fullDate


使用正则表达式试图从字符串中删除年份是一个非常糟糕的主意,这对于世界上所有的地区来说都是非常不同的。最后应该逐段构建字符串,只向StringBuilderHm追加所需的值,
SimpleDataFormat
没有这样的选项,因此只剩下一个潜在的不安全的解决方法,如regex或类似方法。但是,如果您不介意添加额外的依赖项,也可以导入my library Time4A和Time4J的misc模块,然后使用类
AnnualDate
。它显示了如何在没有年份的情况下实现本地化的月-日组合。此解决方案不可本地化。请再次阅读这个问题。OP希望有一个通用的解决方案,而不假设月份和月份的日期必须打印为“MM/dd”。DateFormat df=新的SimpleDateFormat(“dd-MM”,新的区域设置(“EN”);String date=df.format(new date());你的模式对世界上大多数地区来说都是错误的。试试汉语、德语等。这些模式看起来和你想象的不一样。问题不在于编译时预先知道的具体模式。正确的解决方案必须从类似于
DateFormat.getDateInstance(DateFormat.LONG,locale)的内容开始