首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android DatePickerDialog 日期格式從 MMDDYYYY 改為 YYYYMMDD

     編輯:程式設計綜合問答

直接答案

DatePickerDialog 顯示順序由系統區域設置決定,無公共 API 直接修改。需自定義對話框或使用 MaterialDatePicker (Material Components 庫)。

方案一:MaterialDatePicker (推薦,API 21+)

implementation "com.google.android.material:material:1.10.0"

// 使用
MaterialDatePicker picker = MaterialDatePicker.Builder.datePicker()
    .setTitleText("選擇日期")
    .setSelection(MaterialDatePicker.todayInUtcMilliseconds())
    .build();

picker.addOnPositiveButtonClickListener(selection -> {
    String yyyyMMdd = new SimpleDateFormat("yyyyMMdd", Locale.getDefault())
                          .format(new Date(selection));
    // 使用 yyyyMMdd
});
picker.show(getSupportFragmentManager(), "DATE_PICKER");

方案二:自定義 DatePickerDialog (兼容舊版本)

public class YmdDatePickerDialog extends DatePickerDialog {
    public YmdDatePickerDialog(Context context, OnDateSetListener listener, int year, int month, int day) {
        super(context, listener, year, month, day);
    }
    @Override
    public void onDateChanged(DatePicker view, int year, int month, int day) {
        // 可選:實時更新標題顯示為 yyyy-MM-dd
        setTitle(String.format(Locale.getDefault(), "%04d-%02d-%02d", year, month+1, day));
    }
}

方案三:NumberPicker 組合自繪 (完全可控)

參考 StackOverflow 高票回答:android-format-date-to-mm-dd-yyyy-from-datepicker

總結

  • 不再維護舊 DatePickerDialog 格式 Hack,遷移至 Material Components。
  • 若項目最低 API < 21,可複製 Material 源碼中的 MaterialDatePicker 相關類到項目中使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved