问题描述
我在应用中使用重要的日期选择器来选择日期。下面是我的代码。
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());
}
});
当我选择一个日期时,该日期将在设备1的 dd MMM yyyy 中返回,并在设备2的 MMM dd,yyyy 中返回。
我需要在所有设备上以相同格式(例如: dd MMM yyyy )返回日期。如何在重要日期选择器中实现这一目标。
解决方法
您可以使用:
MaterialDatePicker<Long> materialDatePicker = builder.build();
materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
//....
}
});
通过这种方式,您拥有一个长值,而不是一个字符串。
,您应根据自己的选择使用SimpleDateFormat设置日期格式。
@Override
public void onDateSet(DatePickerDialog view,int Year,int Month,int Day) {
Calendar selectedDate = Calendar.getInstance().set(Year,Month,Day);
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
String formatedDate = formatter.format(selectedDate );
//to sting desired format date
Toast.makeText(MainActivity.this,formatedDate,Toast.LENGTH_LONG).show();
}
快乐编码!
,如果您想更改 MaterialPicker 日期格式,请使用以下代码,此代码对我有用。
MaterialDatePicker<Long> materialDatePicker=materialDateBuilder.build();
materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
// Get the offset from our timezone and UTC.
TimeZone timeZoneUTC = TimeZone.getDefault();
// It will be negative,so that's the -1
int offsetFromUTC = timeZoneUTC.getOffset(new Date().getTime()) * -1;
// Create a date format,then a date object with our offset
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
Date date = new Date(selection + offsetFromUTC);
mEt_last_date_to_apply.setText(simpleFormat.format(date));
}
});
,
我的解决方案:
val builder = MaterialDatePicker.Builder.datePicker()
builder.setTitleText("Select a Date")
val picker = builder.build()
tv_rw_startDate.setOnClickListener {
picker.show(activity?.supportFragmentManager!!,picker.toString())
picker.addOnPositiveButtonClickListener {
val calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
calendar.time = Date(it)
tv_rw_startDate.text = "${calendar.get(Calendar.DAY_OF_MONTH)}/ " +
"${calendar.get(Calendar.MONTH) + 1}/${calendar.get(Calendar.YEAR)}"
}
}