14

我正在尝试Calendar使用以下方法获取实际月份:

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

根据系统设置“Settings --> Date & Time”实际月份为10,get(Calendar.MONTH)返回09。

4

6 回答 6

36

请记住,月份值从开始0,因此October实际上是月份编号9

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

于 2013-10-13T17:25:51.520 回答
9

Calendar.MONTH返回基于零的月份,这就是为什么它比实际月份少 1 加 1 以获得正确的值

String time = String.valueOf(c.get(Calendar.MONTH)+1);
于 2013-10-13T17:26:04.690 回答
4

Calendar.MONTH

返回

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

文档

因此,将您的代码更改为

String time = String.valueOf(c.get(Calendar.MONTH)+1);// added 1 
于 2013-10-13T17:26:23.717 回答
0

Calendar.MONTH 值从 0 到 11 而不是 1 到 12 开始。

您可以检查 Calendar.JANUARY 的值是 0 而不是 1。

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

于 2013-10-13T17:32:39.053 回答
0

用这个

    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();
}
于 2018-06-22T11:18:53.567 回答
0

我建议尝试

@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; }
});
于 2016-06-06T17:19:01.763 回答