Android Studio(Java)修改DatePickerDialog日期格式求助
修改Android Studio中DatePickerDialog的日期格式为“Mon, May 6”
解决方案步骤:
1. 调整EditText的选中日期显示格式
在onDateSet方法中,不要直接拼接日期字符串,改用SimpleDateFormat生成目标格式的文本:
@Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { // 生成"Mon, May 6"格式的显示文本 Calendar selectedCal = Calendar.getInstance(Locale.ENGLISH); selectedCal.set(year, month, dayOfMonth); SimpleDateFormat displayFormat = new SimpleDateFormat("EEE, MMM d", Locale.ENGLISH); String displayDate = displayFormat.format(selectedCal.getTime()); // 数据库存储格式保持原有逻辑不变 sowingDateDb = year + "-" + (month + 1) + "-" + dayOfMonth; // 更新EditText显示内容 crop_agetxt.setText(displayDate); try { // 计算天数仍使用原格式解析 cropAge = GetDays(dayOfMonth + "/" + (month + 1) + "/" + year); } catch (ParseException e) { e.printStackTrace(); } }
2. 统一DatePickerDialog的Locale(修正对话框内日期显示)
默认DatePickerDialog的日期格式受系统Locale影响,需指定Locale.ENGLISH来对齐显示逻辑:
// 替换原DatePickerDialog创建代码 DatePickerDialog datePicker = new DatePickerDialog( FarmInputs.this, Locale.ENGLISH, 0, new DatePickerDialog.OnDateSetListener() { // 上述onDateSet实现 }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) );
3. (可选)使用Java 8+日期API替代SimpleDateFormat
若项目适配Java 8及以上版本,推荐使用更安全的DateTimeFormatter:
// 生成显示格式字符串 LocalDate selectedDate = LocalDate.of(year, month + 1, dayOfMonth); DateTimeFormatter displayFormatter = DateTimeFormatter.ofPattern("EEE, MMM d", Locale.ENGLISH); String displayDate = selectedDate.format(displayFormatter);
格式说明
格式字符串"EEE, MMM d"各部分含义:
EEE:英文星期缩写(如Mon)MMM:英文月份缩写(如May)d:不带前导零的日期数字(如6)
内容的提问来源于stack exchange,提问作者Joy
相关产品推荐
相关产品推荐

