我MaterialDatePicker在 android studio 中使用,以便用户能够选择出生日期,选择日期后,返回的值是带有long所选日期的时间戳(自 1970 年 1 月 1 日以来的毫秒数)。问题是得到的结果稍有错误,例如:如果用户选择日期10/05/1998(1998年10月1日),则返回的日期是在此之前的一天,即日历返回10/04 / 1998 年(1998 年 10 月 4 日)。
我的代码:
Calendar calendar = Calendar.getInstance();
MaterialDatePicker.Builder<Long> builder =
MaterialDatePicker.Builder.datePicker();
MaterialDatePicker<Long> picker = builder.build();
picker.show(getChildFragmentManager(), picker.toString());
picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() {
@Override
public void onPositiveButtonClick(Long selection) {
calendar.setTimeInMillis(selection);
SimpleDateFormat simpleDateFormat = new
SimpleDateFormat("dd/MM//yyyy",Locale.getDefault());
txtBirthDate.setText(simpleDateFormat.format(calendar.getTime()));
}
});
Run Code Online (Sandbox Code Playgroud)
现在 timeInMillis 的实例calendar具有选定的日期,仅在一天之前。我怎样才能解决这个问题?
由于某些未知原因,MaterialDatePicker 在选择后返回不正确的日期。例如,用户位于墨西哥地区,时区为:America/Tijuana。当他在视觉表示中选择:2021-10-05时,在结果文本中我有-1天,2021-10-04。对于 RU 地区,一切正常。这是代码:
public void startDateSelectionPicker() {
try {
MaterialDatePicker<Long> picker = MaterialDatePicker.Builder.datePicker()
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.setTheme(R.style.CustomDatePickerDialog)
.build();
picker.addOnPositiveButtonClickListener(selection -> {
TimeZone t = TimeZone.getDefault();
Calendar c1 = Calendar.getInstance();
c1.setTimeInMillis(selection);
c1.setTimeZone(TimeZone.getDefault());
//here I need to receive correct date, but receiving -1 from originally selected date.
String date = ToolsManager.calendarToDate(this, c1, "yyyy-MM-dd");
});
picker.show(getSupportFragmentManager(), picker.getTag());
} catch (IllegalArgumentException e) {
}
}
public static String calendarToDate(Context context, Calendar calendar, String dateFormat) {
if (calendar == null) {
return null;
}
Locale locale …Run Code Online (Sandbox Code Playgroud) timezone android android-calendar java-time materialdatepicker
我正在尝试从 DatePicker 获取所选日期,但总是比所选日期少一天
例如,如果我选择 14/2/2022,我将获得 13/2/2022,如果我选择 8/10/2018,我将获得 7/10/2018
这是我的代码:
private fun DatePickerSelected() {
val picker = MaterialDatePicker.Builder.datePicker()
.setTitleText("Select date of birth")
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
.build()
picker.addOnPositiveButtonClickListener {
val date = Date(picker.selection!!)
Log.d("Date",date.toString())
val dateString = SimpleDateFormat("dd/MM/yyyy").format(date)
binding.edtBirthday.editText?.setText(dateString)
}
picker.show(requireActivity().supportFragmentManager, "BirthdayPicker")
}
Run Code Online (Sandbox Code Playgroud)
到底是哪一个问题呢?谢谢!
我目前正在使用这个版本的素材库
com.google.android.material:material:1.7.0-alpha02
但是,当我使用武术日期选择器显示日期范围选择器时,该选择器与手机上的导航按钮重叠,请参见下图:
如何更改Android 中的材质日期和时间选择器背景颜色?我发现许多解决方案默认日期和时间选择器不是材料设计
android android-datepicker material-design material-components-android materialdatepicker