我使用CalendarView显示日历,并加载当前日期和时间。我需要的是获取当前日期和时间在我的活动中使用它们。因此,时间应该是当前时间,但用户可以选择另一个日期。
这就是我实施的方式:
final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
AlertDialog diaBox = dateDialogBox();
diaBox.show();
final CalendarView calendarView = (CalendarView) diaBox.findViewById(R.id.calendarView);
Calendar calendar = Calendar.getInstance();
formatedDate = sdf.format(calendar.getTime());
dateDialog.setTitle(formatedDate);
dateInMillis = calendar.getTimeInMillis();
calendarView.setOnDateChangeListener(new OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
formatedDate = sdf.format(view.getDate());
dateDialog.setTitle(formatedDate);
dateInMillis = calendarView.getDate();
}
});
当提示对话框时,它会从日历中获取日期和时间,并且操作正确。 但是当我选择另一个日期时,它会进入 setOnDateChangeListener(),此处使用 CalendarView 来获取日期和时间,而不是日历。因此,我得到了正确的日期,但时间以00:00:00这样出现。
如何从CalendarView获取当前时间?
答案 0 :(得分:1)
CalendarView不包含时间信息(因为它只是日历)。如果您想保留您的时间信息并只应用所选日期,请尝试使用此类Calender.set()方法
final SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
AlertDialog diaBox = dateDialogBox();
diaBox.show();
final CalendarView calendarView = (CalendarView) diaBox.findViewById(R.id.calendarView);
final Calendar calendar = Calendar.getInstance();
formatedDate = sdf.format(calendar.getTime());
dateDialog.setTitle(formatedDate);
dateInMillis = calendar.getTimeInMillis();
calendarView.setOnDateChangeListener(new OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
calendar.set(year, month, dayOfMonth);
long selectedDateInMillis = calendar.getTimeInMillis();
formatedDate = sdf.format(selectedDateInMillis);
dateDialog.setTitle(formatedDate);
dateInMillis = selectedDateInMillis;
}
});