2013-09-30 16 views
0

Я работаю над регистрационной формой, у которой есть выбор даты. Когда пользователь выбирает дату, обновления TextView показывают выбранную дату в формате (MM-dd-YYYY). Когда пользователь нажимает кнопку отправки, он передает данные форм в mysql db. Он, очевидно, не вставляет дату, потому что ее не в правильном формате (yyyy-MM-dd). Я попытался использовать метод SimpleDateFormat, но не могу заставить его работать. Может кто-нибудь помочь мне понять, как отформатировать дату?Формат Дата в формате mysql

datedob = (TextView) findViewById(R.id.reg_dob); 

String dob = datedob.getText().toString(); 

Мой DatePicker код:

public void populateSetDate(int year, int month, int day) { 
    datedob = (TextView)findViewById(R.id.reg_dob); 
    datedob.setText(month + "-" + day + "-" + year); 
} 
@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int yy = calendar.get(Calendar.YEAR); 
     int mm = calendar.get(Calendar.MONTH); 
     int dd = calendar.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, yy, mm, dd); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(yy, mm+1, dd); 
    } 

} 

ответ

1

Вам потребуется два DateFormat экземпляры:

  • один разобрать строку даты с вашего TextView.
  • один для форматирования разбора даты до желаемого представления.

Это будет выглядеть примерно так, предполагая, что ваш TextView содержит "MM-dd-yyyy" отформатированного представление выбранной даты:

String dobSource = datedob.getText().toString(); 
Date dobDate = new SimpleDateFormat("MM-dd-yyyy").parse(dobSource); 
String dobTarget = new SimpleDateFormat("yyyy-MM-dd").format(dobDate); 

Вы можете потенциально избежать преобразования строки даты из TextView пути отслеживания в Date или Calendar ссылка, которая обновляется всякий раз, когда onDateSet(...) получает удар. Тогда этот экземпляр будет фактически стать моделью данных, поддерживающей TextView, и значение, которое заканчивается вставкой в ​​базу данных.

Это, как говорится, я предпочитаю хранить/сохранять даты в их самом элементарном представлении: как значение long. С такими значениями, как правило, легче работать (поскольку вы избегаете какого-либо разбора) и, как правило, лучше взаимозаменяемы между различными платформами. В конце концов, сохранение даты должно касаться фактических данных - любое конкретное представление/формат только усложняет ситуацию дальше по дороге.

+0

Итак, вы говорите, что вытащить дату из метода onDateSet было бы лучше, чем вытащить его из TextView? Если да, как бы я его потянул? – Carbongixxer

+0

Я думаю, что я уже объяснил суть этого в моем ответе выше: создайте экземпляр «Calendar», который вы обновляете каждый раз, когда новые значения входят через 'onDateSet (...)'. Затем вы можете использовать это как базовую модель данных как для «TextView», так и для значения, которое в конечном итоге будет вставлено в вашу базу данных. Обратите внимание, что это всего лишь подход, который я бы рассмотрел, но это не решение * only *. Вам решать, как реально реализовать вещи. –

Смежные вопросы