2016-03-07 33 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; 
    } 
    } 
}); 

我希望,這將幫助你..