如何从CalendarView获取星期几

时间:2016-03-07 11:28:01

标签: android 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(),只是为了知道它在我选择的每个日期都给了我相同的输出(今天和第三天的值)。我错过了什么?

更新

calendar.set(year, month, dayOfMonth);

正确设置日历值,而以下内容:

calendar.setTimeInMillis(view.getDate()); 

没有按'吨。不知道原因。

7 个答案:

答案 0 :(得分:2)

例如:

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

答案 1 :(得分: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 ...
}

答案 2 :(得分:0)

这应该不难,例如这是否回答了你的问题? Android: how to get the current day of the week (Monday, etc...) in the user's language?

答案 3 :(得分:0)

尝试使用日历并在日历视图中设置它:

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

答案 4 :(得分:0)

final JsonObjectRequest request = new JsonObjectRequest(JsonObjectRequest.Method.POST,
            url, json,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    TextView mTextView = (TextView) findViewById(R.id.output);
                    print("Success");
                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            TextView mTextView = (TextView) findViewById(R.id.output);
            print("Failure (" + error.networkResponse.statusCode + ")");
        }
    }){
        @Override
        protected VolleyError parseNetworkError(VolleyError volleyError) {
            return super.parseNetworkError(volleyError);
        }

        @Override
        public void deliverError(VolleyError error) {
            super.deliverError(error);
        }
    };

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

希望这有用。

答案 5 :(得分:0)

使用java api中的Calender类。

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

我希望,这会对你有帮助..

答案 6 :(得分:0)

太晚了,但是很好,我遇到了同样的问题。我用这个解决了。

    public static int dayOfWeek(int day, int month, int year) {

    Calendar c = Calendar.getInstance();

    c.set(year,month,day);

    return c.get(Calendar.DAY_OF_WEEK);
}

此方法以int形式返回星期几。如果是星期天,则返回1,如果是星期三,则返回4。