CalendarView getDate()不返回时间

时间:2014-09-23 14:41:08

标签: android date

我使用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获取当前时间?

1 个答案:

答案 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;
    }
});