2016-03-07 31 views
2

我有我的布局一个CalendarView得到一周的一天,我已经添加了日期更改侦听到它:如何从CalendarView

calendarView = (CalendarView)findViewById(R.id.calendarView); 

calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
    @Override 
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 

     Log.i("View.getDate", view.getDate() + ""); 
    } 
}); 

我可以访问选定的日期的年,月,一天的最月。但是,我如何获得一周中的哪一天?我想要在CalendarView中选择的任何日期的信息。

我把view.getDate()放在日志里,只知道它给了我在我选择的每个日期都有相同的输出(今天日期的值)。我错过了什么?

UPDATE:

calendar.set(year, month, dayOfMonth); 

正确正确设置日历值,而以下几点:

calendar.setTimeInMillis(view.getDate()); 

没有。不知道原因。

回答

1

例如:

calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
    @Override 
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 

     Calendar calendar = Calendar.getInstance(); 
     calendar.set(year, month, dayOfMonth); 
     int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); 
    } 
}); 
+0

这就是问题所在。 'view.getDate'返回给我同样的结果 - 无论我选择哪个日期。 –

+0

Thankyou。我不知道为什么'view.getDate'返回相同的值。有什么想法吗? 'calendar.set(year,month,dayOfMonth)'正确设置日历值。 –

0

使用Android日历类。

Calendar selected = Calendar.getInstance(); 
selected.setTimeInMillis(view.getDate()); 
int dayOfWeek = selected.get(Calendar.DAY_OF_WEEK); 

switch (dayOfWeek) { 
    case Calendar.SUNDAY: 
     // ... 

    case Calendar.MONDAY: 
     // etc ... 
} 
+0

哎萨尔多,问题是我得到'view.getDate'相同的值无论我选择什么日期。 –

0

尝试用这种使用日历,并设置它通过您从日历视图获取时间:

Calendar selected = Calendar.getInstance(); 
    selected.setTimeInMillis(calendarView .getDate()); 
    int dayOfWeek = selected.get(Calendar.DAY_OF_WEEK); 
+0

嗨,谢谢你的回应。但是无论我选择什么日期,我都会获得'view.getDate'的相同值。 –

+1

嗯,如果你设置年,月和日日历哪些值可以从onSelectedDayChange selected.set(年,月,日)获得;并移除selected.setTimeInMillis(calendarView .getDate());这有帮助吗? –

+0

是的,设定年,月和日做这件事,但为什么不'getDate'?任何想法? –

0
public static int dayOfWeek(String date) { 
    try { 
     int day = 0; 
     SimpleDateFormat simpleDateformat = new SimpleDateFormat("yyyy-MM-dd"); 
     Date now = simpleDateformat.parse(date); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(now); 
     day = calendar.get(Calendar.DAY_OF_WEEK); 
     return day; 
    } catch (Exception e) { 
     return 0; 
    } 
} 

然后你可以使用日历。 MONDAY,Calendar.TUESDAY等。

希望这会有所帮助。

0

使用Calender来自java api的类。

calendarView = (CalendarView)findViewById(R.id.calendarView); 

calendarView.setOnDateChangeListener(new  CalendarView.OnDateChangeListener() { 
    @Override 
    public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 

     Log.i("View.getDate", view.getDate() + ""); 
     /* 
      for month you can use following. like 
       0 for jan 
       1 for feb 

     */ 
     int newMonth; 
     if(month > 9){ 
      newMonth= month-1; 
     } 
     else{ 
      switch(month){ 
       case (1|01):{ 
       newMonth = 0; 
       } 
       break; 
       case (2|02):{ 
       newMonth = 1; 
       } 
       break; 
      .... 
      } 
     } 
      Calendar calendar = new  GregorianCalendar(year, newMonth 
, dayOfMonth); 
      int result = calendar.get(Calendar.DAY_OF_WEEK); 
     switch (result) { 
     case Calendar.MONDAY: 
      System.out.println("It's Monday !"); 
      break; 
    } 
    } 
}); 

我希望,这将帮助你..