从日历视图中获取日期

m2xkgtsf  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(211)

我正在设计一个简单的android活动,带有edittext、calendarview和一个按钮。按此按钮将以yyyy/mm/dd格式发回用户输入的文本和选定的日期(仅一天)。
首先我想有一个非常简单的方法来解决这个问题,例如:

str_selectedDay = myCalendarview.getYear() + "/";
str_selectedDay += myCalendarview.getMonth() + "/";
str_selectedDay += myCalendarview.getYear();

但事实上,对于calendarview没有类似的方法。唯一有点相似的方法是 myCalendarView.getDate() . 问题是它返回的是今天的日期,单位是毫秒,而不是用户选择的日期。
我在google上搜索了这个问题(这里也发现了一些老问题),有些人建议使用这样的方法:

myCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
            str_seletedDate = String.format("%04d.%02d.%02d", year, month + 1, dayOfMonth);

        }
    });

这样做的一个主要问题是,如果用户只想选择当前日期(默认情况下选择什么),这意味着他不点击calendarview,因此 str_bookDueDate 变量永远不会更新。
所以我想出了一个解决办法:

myCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
        try {
            String str_selectedDate= String.format("%04d.%02d.%02d", year, month + 1, dayOfMonth);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            Date date = sdf.parse(str_selectedDate);
            long millis = date.getTime();
            myCalendarView.setDate(millis);

        } catch (Exception e) {
            UImessage.Log(e.toString());
        }
    }
});

当我需要知道日期时:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
String date = sdf.format(new Date(myCalendarView.getDate()));

因此,当用户在calendarview中选择一个新的日期时,我必须将calendarview的日期更改为他选择的日期,方法是将所选的年、月和日期转换回毫秒,然后用setdate()方法写入。
这是可行的,但似乎100%复杂和不自然。
我的问题是:从calendarview获取信息的正确方法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题