Android 日历更改时间更改日期为今天
Android calendar changing time changing date to today
我正在使用 Calendar
,我可以设置日期和获取未来的日期。假设我有一个设置日期的 DatePickerDialog
例如 15-09-2016 并且我有一个设置小时的 TimePickerDialog
例如: 22:30
我的问题是当我使用 DatePickerDialog
并将日期设置为:15-09-2016 没问题。但是,然后我使用 TimePickerDialog
并尝试更改时间,Calendar's
日期更改为今天 (27-07-2016).
但如果我先使用 TimePickerDialog
然后使用 DatePickerDialog
就没有问题,我可以设置日期:15-09-2016 22:30
我检查了 Google 和 Whosebug,并在创建此问题时查看了建议的问题,但我没有看到任何内容。
我的 DatePickerDialog
:
DatePickerDialog datePickerDialog=
new DatePickerDialog(thisActivity, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendarAlarm.set(Calendar.YEAR, year);
mCalendarAlarm.set(Calendar.MONTH, monthOfYear);
mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth);
SimpleDateFormat dateformat = new SimpleDateFormat("dd MMM yyyy kk:mm",Locale.getDefault());
String datetime = dateformat.format(mCalendarAlarm.getTime());
alarmDate.setText(datetime);
}}, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH),
mCalendarAlarm.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(mCalendarAlarm.getTimeInMillis());
datePickerDialog.show();
我的 TimePickerDialog
:
TimePickerDialog mTimePicker;
int hour = mCalendarAlarm.get(Calendar.HOUR_OF_DAY);
int minute = mCalendarAlarm.get(Calendar.MINUTE);
mTimePicker = new TimePickerDialog(thisActivity,mPickerTheme, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
mCalendarAlarm.set(Calendar.HOUR_OF_DAY,selectedHour);
mCalendarAlarm.set(Calendar.MINUTE,selectedMinute);
alarmDialogTime.setText(String.format(Locale.getDefault(),"%02d:%02d", selectedHour, selectedMinute));
}}, hour, minute, true);
mTimePicker.show();
声明时 Calendar
:
mCalendarAlarm = Calendar.getInstance();
mCalendarAlarm.setTimeZone(TimeZone.getDefault());
那么我该如何解决这个问题,有没有办法或者你们以前遇到过这个问题。感谢您的帮助!
问题是您对 TimePicker
和 DatePicker
使用相同的日历对象 mCalendarAlarm
。尝试为两个选择器使用 Calendar
class 的不同对象。
例如:
mCalendarAlarm
for DatePicker
并为 TimePicker
创建新的 Calendar
对象 mTimeAlarm
如果你有多个初始化 mCalendarAlarm = Calendar.getInstance();
删除不需要的初始化。
我正在使用 Calendar
,我可以设置日期和获取未来的日期。假设我有一个设置日期的 DatePickerDialog
例如 15-09-2016 并且我有一个设置小时的 TimePickerDialog
例如: 22:30
我的问题是当我使用 DatePickerDialog
并将日期设置为:15-09-2016 没问题。但是,然后我使用 TimePickerDialog
并尝试更改时间,Calendar's
日期更改为今天 (27-07-2016).
但如果我先使用 TimePickerDialog
然后使用 DatePickerDialog
就没有问题,我可以设置日期:15-09-2016 22:30
我检查了 Google 和 Whosebug,并在创建此问题时查看了建议的问题,但我没有看到任何内容。
我的 DatePickerDialog
:
DatePickerDialog datePickerDialog=
new DatePickerDialog(thisActivity, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendarAlarm.set(Calendar.YEAR, year);
mCalendarAlarm.set(Calendar.MONTH, monthOfYear);
mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth);
SimpleDateFormat dateformat = new SimpleDateFormat("dd MMM yyyy kk:mm",Locale.getDefault());
String datetime = dateformat.format(mCalendarAlarm.getTime());
alarmDate.setText(datetime);
}}, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH),
mCalendarAlarm.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMinDate(mCalendarAlarm.getTimeInMillis());
datePickerDialog.show();
我的 TimePickerDialog
:
TimePickerDialog mTimePicker;
int hour = mCalendarAlarm.get(Calendar.HOUR_OF_DAY);
int minute = mCalendarAlarm.get(Calendar.MINUTE);
mTimePicker = new TimePickerDialog(thisActivity,mPickerTheme, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
mCalendarAlarm.set(Calendar.HOUR_OF_DAY,selectedHour);
mCalendarAlarm.set(Calendar.MINUTE,selectedMinute);
alarmDialogTime.setText(String.format(Locale.getDefault(),"%02d:%02d", selectedHour, selectedMinute));
}}, hour, minute, true);
mTimePicker.show();
声明时 Calendar
:
mCalendarAlarm = Calendar.getInstance();
mCalendarAlarm.setTimeZone(TimeZone.getDefault());
那么我该如何解决这个问题,有没有办法或者你们以前遇到过这个问题。感谢您的帮助!
问题是您对 TimePicker
和 DatePicker
使用相同的日历对象 mCalendarAlarm
。尝试为两个选择器使用 Calendar
class 的不同对象。
例如:
mCalendarAlarm
for DatePicker
并为 TimePicker
Calendar
对象 mTimeAlarm
如果你有多个初始化 mCalendarAlarm = Calendar.getInstance();
删除不需要的初始化。