如何在 android CalendarView 中显示特定月份?

How to show a specific month in android CalendarView?

我想使用 android CalendarView 向用户显示特定月份。请帮我实现这个功能。我写了下面的代码,但它不起作用。

  CalendarView calendarView = (CalendarView) findViewById(R.id.calendarView);
    Calendar calendar1 = Calendar.getInstance();
    calendar1.set(2016, 6, 1);

    Calendar calendar2 = Calendar.getInstance();
    calendar2.set(2016, 6, 30);

    calendarView.setMinDate(calendar1.DATE);
    calendarView.setMaxDate(calendar2.DATE);

当我尝试使用上面的代码 运行 应用程序时,会出现以下输出。

提示:Calendar.DATE的值是多少?文档说 5,所以当您调用此方法时,您说的是“1970 年 1 月 1 日过去 5 毫秒”。

setMinDate(long minDate)

Sets the minimal date supported by this CalendarView in milliseconds since January 1, 1970 00:00:00 in getDefault() time zone.

基本上,这是一个静态字段,可能不是您想要的值。

也许您想要 getTimeInMillis() 哪个 returns long 作为您设置日期的值?

calendarView.setMinDate(calendar1.getTimeInMillis());
calendarView.setMaxDate(calendar2.getTimeInMillis());

根据我的经验,我总是使用 Calender.set(Calendar.YEAR, year) 方法来设置年份和 Calender.set(Calendar.MONTH, month) 方法来设置月份和Calender.set(Calendar.DAY,day) 方法设置日期。所以我建议你也这样做,

    String date = "1/6/2016";
    String parts[] = date.split("/");
    int day = Integer.parseInt(parts[0]);
    int month = Integer.parseInt(parts[1]);
    int year = Integer.parseInt(parts[2]);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.MONTH, month);
    calendar.set(Calendar.DAY_OF_MONTH, day);

    long milliTime = calendar.getTimeInMillis();

现在通过

在日历视图中设置所选日期
  mCalendarView.setDate (milliTime, true, true);