Android Material 日期选择器日期格式

Asu*_*R C 4 java android datepicker android-datepicker material-components-android

我在我的应用程序中使用材料日期选择器来选择日期。下面是我的代码。

MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.datePicker();
    builder.setSelection(Calendar.getInstance().getTimeInMillis());
    builder.setTitleText(getString(R.string.selectDate));
    final MaterialDatePicker materialDatePicker = builder.build();

    btn_pickDate(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            materialDatePicker.show(getSupportFragmentManager(),"DATE_PICKER");
        }
    });
    
    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
        @Override
        public void onPositiveButtonClick(Object selection) {
            startDate.setText(materialDatePicker.getHeaderText());
        }
    });
Run Code Online (Sandbox Code Playgroud)

当我选择日期时,该日期在设备一中以dd MMM yyyy 形式返回,在设备二中以MMM dd, yyyy 形式返回。

我需要在所有设备上以相同的格式返回日期(例如:dd MMM yyyy)。如何在物料日期选择器中实现此目的。

Gab*_*tti 8

侦听addOnPositiveButtonClickListener器以 Long 值返回选定的日期。这样你就有了一个长值而不是一个字符串。

您可以使用:

    MaterialDatePicker<Long> materialDatePicker = builder.build();
    
    materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
        @Override
        public void onPositiveButtonClick(Long selection) {
           //....
           Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
           calendar.setTimeInMillis(selection);
           SimpleDateFormat format = new SimpleDateFormat("yyyy MM dd");
           String formattedDate  = format.format(calendar.getTime());
        }
    });
Run Code Online (Sandbox Code Playgroud)

在科特林中:

materialDatePicker.addOnPositiveButtonClickListener {
    val utc = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
    utc.timeInMillis = it
    val format = SimpleDateFormat("yyyy-MM-dd")
    val formatted: String = format.format(utc.time)        
}
Run Code Online (Sandbox Code Playgroud)