2011-06-21 12 views

答えて

73

これを試してみてください:

DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1); 
int day = datePicker.getDayOfMonth(); 
int month = datePicker.getMonth() + 1; 
int year = datePicker.getYear(); 
+1

これは、UIで日付ピッカーの値を更新するときにはうまくいかないようです。それは私に、 – gnB

+2

で始まる価値を与えてくれます。 OnDateSetListenerをdatePickerに設定してください。 –

+0

これは私のために働いた。私はこれらの値を次のように設定します。String day = String.valueof(datePicker.getDayOfMonth();これまでのところ、intを文字列に変換してsqlデータベースに挿入するため完全に動作します) – natur3

3

あなたがアプリに日付ピッカーのウィジェットを追加することを意味します。

あなたの活動のクラスにグローバル変数宣言:このコードダウン

private Button mPickDate; 
private int mYear; 
private int mMonth; 
private int mDay; 
static final int DATE_DIALOG_ID = 0; 

書き込みのonCreate()関数に:

//date picker presentation 
    mPickDate = (Button) findViewById(R.id.pickDate);//button for showing date picker dialog 
    mPickDate.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { showDialog(DATE_DIALOG_ID); } 
    }); 

    // get the current date 
    final Calendar c = Calendar.getInstance(); 
    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 


    // display the current date 
    updateDisplay(); 

これらの機能のonCreateの外()関数を書き留め

//return date picker dialog 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
    } 
    return null; 
} 

//update month day year 
private void updateDisplay() { 
    mBodyText.setText(//this is the edit text where you want to show the selected date 
     new StringBuilder() 
      // Month is 0 based so add 1 
     .append(mYear).append("-") 
     .append(mMonth + 1).append("-") 
     .append(mDay).append("")); 


      //.append(mMonth + 1).append("-") 
      //.append(mDay).append("-") 
      //.append(mYear).append(" ")); 
} 

// the call back received when the user "sets" the date in the dialog 
private DatePickerDialog.OnDateSetListener mDateSetListener = 
    new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      mYear = year; 
      mMonth = monthOfYear; 
      mDay = dayOfMonth; 
      updateDisplay(); 
     } 
}; 
+0

これは最善の回答 – Amir

22

私はMinDateを設定するために管理しました& MaxDateプログラムで次のように:

final Calendar c = Calendar.getInstance(); 

    int maxYear = c.get(Calendar.YEAR) - 20; // this year (2011) - 20 = 1991 
    int maxMonth = c.get(Calendar.MONTH); 
    int maxDay = c.get(Calendar.DAY_OF_MONTH); 

    int minYear = 1960; 
    int minMonth = 0; // january 
    int minDay = 25; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.create_account); 
     BirthDateDP = (DatePicker) findViewById(R.id.create_account_BirthDate_DatePicker); 
     BirthDateDP.init(maxYear - 10, maxMonth, maxDay, new OnDateChangedListener() 
     { 

     @Override 
     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
     { 
      if (year < minYear) 
       view.updateDate(minYear, minMonth, minDay); 

       if (monthOfYear < minMonth && year == minYear) 
       view.updateDate(minYear, minMonth, minDay); 

       if (dayOfMonth < minDay && year == minYear && monthOfYear == minMonth) 
       view.updateDate(minYear, minMonth, minDay); 


       if (year > maxYear) 
       view.updateDate(maxYear, maxMonth, maxDay); 

       if (monthOfYear > maxMonth && year == maxYear) 
       view.updateDate(maxYear, maxMonth, maxDay); 

       if (dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth) 
       view.updateDate(maxYear, maxMonth, maxDay); 
     }}); // BirthDateDP.init() 
    } // activity 

それは私のために正常に動作し、:)

+0

私はそれと反対にしたい、ということは、現在の日付と現在の日付が最大の日付が現在の日付よりも大きい日付になることを意味します。これはhttp://stackoverflow.com/questions/8675984/date-picker-with-max-and-minimum-date-in-ondatechanged-in-android-1-5 – mH16

1

はUも

GregorianCalendar calendarBeg=new GregorianCalendar(datePicker.getYear(), 
     datePicker.getMonth(),datePicker.getDayOfMonth()); 
    Date begin=calendarBeg.getTime(); 
3

あなたもこのコードを使用することができ、TE Calendar.GregorianCalendarのJavaクラスを使用することができます楽しみます...

datePicker = (DatePicker) findViewById(R.id.schedule_datePicker); 
int day = datePicker.getDayOfMonth(); 
int month = datePicker.getMonth() + 1; 
int year = datePicker.getYear(); 


SimpleDateFormat dateFormatter = new SimpleDateFormat("MM-dd-yyyy"); 
Date d = new Date(year, month, day); 
String strDate = dateFormatter.format(d); 
関連する問題