我正在尝试使用以下方法从Calendar
中获取实际月份:
Calendar c = Calendar.getInstance();
String time = String.valueOf(c.get(Calendar.MONTH));
根据系统设置 "设置 --> 日期和时间",实际月份为10,而get(Calendar.MONTH)
返回的是09。
请记住,月份的值从 0
开始计算,因此 October
实际上是第 9
个月。
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html#MONTH
Calendar.MONTH
返回的是从0开始计算的月份,因此它会比实际月份少1。
需要加上1才能得到正确的值。
String time = String.valueOf(c.get(Calendar.MONTH)+1);
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
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();
}
我建议尝试一下
@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; }
});
日历.MONTH的值从0到11,而不是1到12。
您可以检查Calendar.JANUARY的值为0,而不是1。
参考:http://developer.android.com/reference/java/util/Calendar.html#JANUARY