如何创建某个日期的文本表示,将区域设置考虑在内并且仅包含日期和月份(没有年份)?
以下代码给了我类似于23/09/2010的内容
DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault()).format(date);
Run Code Online (Sandbox Code Playgroud)
我想得到23/09
uni*_*ify 44
这适用于Android,以防有人需要它:
int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
String monthAndDayText = DateUtils.formatDateTime(context, date, flags);
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 23
y如果有的话,您可以使用正则表达式修剪所有和之前和之后的非字母字符.这是一个启动示例:
public static void main(String[] args) throws Exception {
for (Locale locale : Locale.getAvailableLocales()) {
DateFormat df = getShortDateInstanceWithoutYears(locale);
System.out.println(locale + ": " + df.format(new Date()));
}
}
public static DateFormat getShortDateInstanceWithoutYears(Locale locale) {
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.SHORT, locale);
sdf.applyPattern(sdf.toPattern().replaceAll("[^\\p{Alpha}]*y+[^\\p{Alpha}]*", ""));
return sdf;
}
Run Code Online (Sandbox Code Playgroud)
您会看到此代码段也会针对所有区域设置对其进行测试.它看起来适用于所有语言环境.
只想在模式中提供另一个修改删除年份,这适用于DateFormat.MEDIUM,即使在诸如pt_PT(d'de'MMM'de'yyyy)或lv_LV(y.'gada'd.MMM)之类的语言环境中也是如此.
public static DateFormat getMediumDateInstanceWithoutYears()
{
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.MEDIUM);
sdf.applyPattern(sdf.toPattern().replaceAll(
"([^\\p{Alpha}']|('[\\p{Alpha}]+'))*y+([^\\p{Alpha}']|('[\\p{Alpha}]+'))*",
""));
return sdf;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15327 次 |
| 最近记录: |