2013-02-13 17 views
9

Mam problem z moim DatapickerJak uzyskać wartość datepicker w formacie daty?

użyć kodu za datę uzyskania pokazane miesięcy & roku poniżej

  DatePicker datePicker; 
      datePicker = (DatePicker) findViewById(R.id.dateselect); 

      int day = datePicker.getDayOfMonth(); 
      int month= datePicker.getMonth() + 1; 
      int year = datePicker.getYear(); 

ale kiedy wydrukować datę pokazuje wartość 7 nie 07 i za miesiąc pokazuje wartość 2 nie 02

Chcę te dane liczbowe w formacie daty, tj; np .: 02-02-2013, 24-12-2013
Czy jest jakikolwiek sposób ???

Odpowiedz

24
public String checkDigit(int number) 
    { 
     return number<=9?"0"+number:String.valueOf(number); 
    } 

Podstawowe zastosowanie:

month=checkDigit(month); 
input 7 
output 07 
    String date=checkDigit(monthOfYear+1)+"/"+checkDigit(dayOfMonth)+"/"+year; 
3
<?xml version="1.0" encoding="utf-8"?> 

<Button 
    android:id="@+id/btnChangeDate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Change Date" /> 

<TextView 
    android:id="@+id/lblDate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Current Date (M-D-YYYY): " 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TextView 
    android:id="@+id/tvDate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<DatePicker 
    android:id="@+id/dpResult" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

package com.mkyong.android; 

    import java.util.Calendar; 
import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.DatePicker; 
impot android.widget.TextView; 

public class MyAndroidAppActivity extends Activity { 

private TextView tvDisplayDate; 
private DatePicker dpResult; 
private Button btnChangeDate; 

private int year; 
private int month; 
private int day; 

static final int DATE_DIALOG_ID = 999; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    setCurrentDateOnView(); 
    addListenerOnButton(); 

} 

// display current date 
public void setCurrentDateOnView() { 

    tvDisplayDate = (TextView) findViewById(R.id.tvDate); 
    dpResult = (DatePicker) findViewById(R.id.dpResult); 

    final Calendar c = Calendar.getInstance(); 
    year = c.get(Calendar.YEAR); 
    month = c.get(Calendar.MONTH); 
    day = c.get(Calendar.DAY_OF_MONTH); 

    // set current date into textview 
    tvDisplayDate.setText(new StringBuilder() 
     // Month is 0 based, just add 1 
     .append(month + 1).append("-").append(day).append("-") 
     .append(year).append(" ")); 

    // set current date into datepicker 
    dpResult.init(year, month, day, null); 

} 

public void addListenerOnButton() { 

    btnChangeDate = (Button) findViewById(R.id.btnChangeDate); 

    btnChangeDate.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      showDialog(DATE_DIALOG_ID); 

     } 

    }); 

} 

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case DATE_DIALOG_ID: 
     // set date picker as current date 
     return new DatePickerDialog(this, datePickerListener, 
        year, month,day); 
    } 
    return null; 
} 

private DatePickerDialog.OnDateSetListener datePickerListener 
      = new DatePickerDialog.OnDateSetListener() { 

    // when dialog box is closed, below method will be called. 
    public void onDateSet(DatePicker view, int selectedYear, 
      int selectedMonth, int selectedDay) { 
     year = selectedYear; 
     month = selectedMonth; 
     day = selectedDay; 

     // set selected date into textview 
     tvDisplayDate.setText(new StringBuilder().append(month + 1) 
      .append("-").append(day).append("-").append(year) 
      .append(" ")); 

     // set selected date into datepicker also 
     dpResult.init(year, month, day, null); 

    } 
}; 

}

31

można sformatować datę takiego:

int day = datePicker.getDayOfMonth(); 
int month= datePicker.getMonth(); 
int year = datePicker.getYear(); 
Calendar calendar = Calendar.getInstance(); 
calendar.set(year, month, day); 

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
String formatedDate = sdf.format(calendar.getTime()); 

można przeanalizować ciągu powrotem do obiektu Date wywołując

Date date = sdf.parse(formatedDate); 
+1

to jest poprawny sposób to zrobić. Obiekty do formatowania dat już istnieją, nie ma sensu używać obejść. – Ema

+3

Data (rok, miesiąc, dzień) jest przestarzała calendar.set (rok, miesiąc, dzień); SimpleDateFormat sdf = new SimpleDateFormat ("dd-MM-rrrr"); String formatedDate = sdf.format (calendar.getTime()); – Evilripper

+0

Ta odpowiedź jest lepsza niż wybrana odpowiedź –

1

Można użyć metody niestandardową datę i miesiąc ustawienie w żądanym Format

private static String pad(int c) 
    { 
     return c>=10 ? ""+c : "0"+c;  
    } 

Zamiast wartości dla daty i miesiąc użyj pad(date) i pad(month)

Mam nadzieję, że to pomoże.

2

Począwszy od API level 12, DatePicker ma public CalendarView getCalendarView(), stosując ten pogląd można uzyskać datę:

long dateTime = datePicker.getCalendarView().getDate(); 
Date date = new Date(dateTime); 

następnie sformatować jeśli potrzebne:

DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
String formattedDate = dateFormat.format(date); 
Powiązane problemy