Calendar.MONTH gives wrong value

2020-02-12 03:29发布

问题:

I'm trying to get the actual month from the Calendar using the following:

Calendar c = Calendar.getInstance();          
String time = String.valueOf(c.get(Calendar.MONTH));

According the system settings "Settings --> Date & Time" actual month is 10 while get(Calendar.MONTH) returns 09.

回答1:

Keep in mind that months values start from 0, so October is actually month number 9.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html#MONTH



回答2:

Calendar.MONTH returns month which is zero based that is why it is giving 1 less than actual month Add 1 to get correct value

String time = String.valueOf(c.get(Calendar.MONTH)+1);


回答3:

Calendar.MONTH

returns

0 for 1st month (jan)
1 for 2nd month (feb)
.
.
11 for 12th month (dec)

Docs

So change your code to

String time = String.valueOf(c.get(Calendar.MONTH)+1);// added 1 


回答4:

Calendar.MONTH value starts from 0 to 11 not 1 to 12.

You may check the value of Calendar.JANUARY is 0 not 1.

Refer: http://developer.android.com/reference/java/util/Calendar.html#JANUARY



回答5:

I suggest trying

@Override
public void onSelectedDayChange(CalendarView view, int year, int month, int day) {
Toast.makeText(getApplicationContext(), month+1 + "/" + day  + "/" + year, Toast.LENGTH_SHORT).show();
calDate = month+1 + "/" + day + "/" + year; }
});


回答6:

use this

    public void DateDialog(){

    DatePickerDialog.OnDateSetListener listener=new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
        {
            int Month;
            Month=monthOfYear+1;
            fromDate.setText(year + "-" + Month + "-" + dayOfMonth);
        }};
    DatePickerDialog dpDialog=new DatePickerDialog(getActivity(), listener, year, month, day);
    dpDialog.getDatePicker().setMinDate(mcalendar.getTimeInMillis());
    dpDialog.show();
}