日历.MONTH返回错误值

15

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

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

根据系统设置 "设置 --> 日期和时间",实际月份为10,而get(Calendar.MONTH)返回的是09。


你需要从中减去1,因为月份从0..11。 - BennyTheNerd
6个回答

37

9

Calendar.MONTH返回的是从0开始计算的月份,因此它会比实际月份少1。 需要加上1才能得到正确的值。

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

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 

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

这与现有答案有何不同?一些评论可能会有用。 - Ralf Stubner

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

将字符串连接起来创建日期不安全且是一种糟糕的实践,为了更好的国际化,请使用系统库的日期格式化工具。 - Robin Daugherty

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接