2013-03-15 21 views
0

我在我的Android應用程序有一些奇怪的問題,當我拿起日期前,15march2013在日期選擇器,我得到9october2007的Android的DatePicker挑錯日期

這裏是從sorces

public static class DatePickerFragment extends DialogFragment { 

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


     // Create a new instance of DatePickerDialog and return it 
     return new DatePickerDialog(getActivity(), (OnDateSetListener)getActivity(), year, month, day); 
    } 

} 

public void onDateSet(DatePicker view, int year, int month, int day) { 
    d.setDate(day); 
    d.setMonth(month); 
    d.setYear(year); 
    int flags = 0; 
    flags |= DateUtils.FORMAT_SHOW_DATE; 
    flags |= DateUtils.FORMAT_SHOW_YEAR; 
    String str = DateUtils.formatDateTime(this, d.getTime(), flags); 
    date.setText(str); 
} 

其實我跑出片段的想法什麼可能是錯的 請幫助!

+0

你上哪兒去定義d對象? – 2013-03-15 02:27:12

+0

DatePickerFragment是嵌套類,所以d對象被定義在「主」類 – Mariusz 2013-03-15 02:37:54

回答

2

這些調用棄用:

d.setDate(day); 
    d.setMonth(month); 
    d.setYear(year); 

,而不是做你想什麼。如果您追蹤每次通話並觀察變化,您會驚奇地發現只是將這些數額加到自身中。

而應該做這樣的事情:

Calendar c = Calendar.getInstance(); 
c.set(year, month, day); 

SimpleDateFormat df = new SimpleDateFormat("d yyyy MMM"); 
String formattedDate = df.format(c.getTime()); 
date.setText(str); 

你可以在這裏看到更多的日期格式選項:

http://developer.android.com/reference/java/text/SimpleDateFormat.html

+0

謝謝HaIR,日曆正是我需要修復它 – Mariusz 2013-03-15 10:01:41

+0

不客氣。我很高興得到了幫助。 – HalR 2013-03-16 04:44:24

0

中,我正在實現這一目標的方式:

public class AddEditCourseActivity extends Activity { 
       private Button classStartBT; 
     private DatePickerDialog mDatePickerDialog; 
     private Calendar classStartDate; 
     private SimpleDateFormat mDateFormatter; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 

       classStartDate = new GregorianCalendar(); 

       /** Initialize the mTimeFormatter object */ 
       mTimeFormatter = new SimpleDateFormat("yyyy dd, MM"); 

       classStartBT = (Button) findViewById(R.id.courseClassStartBT); 

    classStartBT.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 


mDatePickerDialog = new DatePickerDialog(
           MyActivity.this, mDateSetListener, 
           classStartDate.get(Calendar.YEAR), 
           classStartDate.get(Calendar.MONTH), 
           classStartDate.get(Calendar.DAY_OF_WEEK)); 



        mDatePickerDialog.show(); 

       } // end onClick 
      }); 

     } 


    private DatePickerDialog.OnDateSetListener mDateSetListener = new OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, 
int dayOfMonth) { 


        classStartTime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
        classStartTime.set(Calendar.MINUTE, minute); 

        /** 
        * display the "class start time" on the buttons 
        */ 


    classStartBT.setText(mDateFormatter.format(classStartTime.getTime())); 

      } 
     }; 

    } // end activity