2015-10-12 38 views
1

好吧,這是離奇的。我有一個非常簡單的DatePicker對話框。問題是無論我選擇什麼日期,返回的價值恰好是選定日期的前一個月。這裏是我的代碼:Android DatePicker片段返回日期前一個月

活動

btnEventDate.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     DialogFragment newFragment = new DatePickerFragment(); 
     newFragment.show(getSupportFragmentManager(), "datePicker"); 
    } 
}); 

@Override 
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
    DateTime dt = new DateTime(year, monthOfYear, dayOfMonth, 0, 0, 0, 0); 
    Log.d(Constants.TAG, "dt: " + dt.toString()); 
    Log.d(Constants.TAG, "str: " + dateHandler.convertDateToYYYY_MM_DDString(dt)); 
} 

DatePickerFragment

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     return new DatePickerDialog(getActivity(), (OnDateSetListener)getActivity(), year, month, day); 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) {} 
} 

對話框出現時,它顯然是設置爲今天的日期。再說說我選擇2015年10月12日,日誌輸出表明這一點:

DT:2015-09-12T00:00:00.000-06:00
STR:2015年9月12日

我肯定錯過了什麼。任何人都知道我在做什麼錯了?

+0

嘗試用這個日期DT =新的日期時間(年,monthOfYear + 1,請將dayOfMonth,0,0,0,0) –

+0

好了,肯定會解決這個問題,但正確的事是什麼?如果這個月是以零爲基礎的,爲什麼不是年和日呢? – Alex

回答

0

月去從012。從JanuaryUndecimber

嘗試將它們與Calendar."MONTH"進行比較。

實施例:Calendar.OCTOBER == 9

鏈接:http://developer.android.com/reference/java/util/Calendar.html#MONTH

注意:如果您使用GregorianCalendar,您可以忽略第13個月。

+0

你說得對。似乎奇怪的是,這些月份是基於零的,但其他參數不是。生活和學習,我猜。謝謝! – Alex

相關問題