You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android DatePicker日期格式不符合预期,如何设置为dd-mmm-yy格式?

解决Android DatePicker日期格式转换为dd-mmm-yy的问题

没问题,我帮你搞定这个日期格式的转换!你现在直接拼接数字得到的是数字月份,要改成三个字母的英文月份缩写(比如Aug),用Android提供的日期格式化工具就能轻松解决,给你两种适配不同场景的方案:

方案一:使用SimpleDateFormat(兼容所有Android版本)

这是最传统的方式,适合所有Android版本,不需要额外配置。修改你的onDateSet方法即可:

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    // 创建Calendar实例,设置用户选中的日期
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, monthOfYear, dayOfMonth);
    
    // 定义目标格式:dd-MMM-yy,指定英文Locale确保月份缩写是英文
    SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yy", Locale.ENGLISH);
    String formattedDate = dateFormatter.format(calendar.getTime());
    
    txtDate.setText(formattedDate);
}

这里的关键是"dd-MMM-yy"格式符:

  • dd:两位数的日期(比如16)
  • MMM:三个字母的月份缩写(比如Aug)
  • yy:两位数的年份(比如21)
  • 加上Locale.ENGLISH是为了避免系统语言影响,确保不管用户手机是中文还是其他语言,都输出英文的月份缩写。

方案二:使用Java 8+的DateTimeFormatter(推荐,更简洁)

如果你开发的应用目标是Android 8.0(API 26)及以上,或者愿意通过Core Library Desugar兼容更低版本,推荐使用更现代的java.time API,代码更简洁易读:

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    // 注意:LocalDate的月份是1-based的,所以要给monthOfYear加1
    LocalDate selectedDate = LocalDate.of(year, monthOfYear + 1, dayOfMonth);
    
    // 定义格式化器,同样指定英文Locale
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yy", Locale.ENGLISH);
    String formattedDate = selectedDate.format(formatter);
    
    txtDate.setText(formattedDate);
}

兼容低版本配置(Android 7.1及以下)

如果要在低版本Android上使用java.time API,需要在你的build.gradle(Module级别)中添加以下配置:

android {
    defaultConfig {
        coreLibraryDesugaringEnabled true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

这两种方案都能帮你得到16-Aug-21这样的目标格式,根据你的项目需求选一个就行啦!

内容的提问来源于stack exchange,提问作者Android God

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 07:03:16