2013-09-30 3 views
0

날짜 선택 도구가있는 등록 양식을 작성 중입니다. 사용자가 날짜를 선택하면 선택한 날짜를 나타내는 TextView가 MM-dd-YYYY 형식으로 업데이트됩니다. 사용자가 submit 버튼을 클릭하면 폼 데이터가 mysql db로 전달된다. 그것은 (yyyy-MM-dd)의 적절한 형식이 아니기 때문에 분명히 날짜를 삽입하지 않습니다. SimpleDateFormat 메서드를 사용해 보았지만 작동시키지 못했습니다. 누군가 날을 형식화하는 방법을 이해하도록 도와 줄 수 있습니까?날짜를 mysql 형식으로 변환

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

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

내 날짜 선택기 코드 :

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에서 날짜 문자열을 구문 분석 할 수 있습니다.
  • 구문 분석 된 날짜를 원하는 표현으로 형식화합니다.

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

    당신은 잠재적으로 Date의 트랙을 유지하여 TextView에서 날짜 문자열로 변환 피할 수 있습니다 : TextView 선택한 날짜의 "MM-dd-yyyy" 형식의 표현을 포함하여 가정 같은 다소 보일 것이다

, 또는 Calendar 참조가 업데이트되면 onDateSet(...)이 업데이트됩니다. 그런 다음이 인스턴스는 효과적으로 TextView을 백업하는 데이터 모델이되고 결국 데이터베이스에 삽입되는 값이됩니다.

개인적으로 나는 가장 기본적인 표현으로 날짜를 저장/유지하는 것을 선호합니다 : long 값. 일반적으로 이러한 값은 (구문 분석을 피할 때) 작업하기가 더 쉽고 일반적으로 다양한 플랫폼간에 더 쉽게 교환 할 수 있습니다. 결국 날짜를 저장하는 것은 실제 데이터에 관한 것이어야합니다. 특정 표현/형식은 길 아래로 복잡한 것을 복잡하게 만듭니다.

+0

그렇다면 onDateSet 메서드에서 날짜를 가져 오는 것이 TextView에서 가져 오는 것보다 낫다는 말입니까? 그렇다면 어떻게 그걸 끌어 올까요? – Carbongixxer

+0

나는 위의 대답에서 이미 그 요지를 설명했다고 생각합니다 :'onDateSet (...) '을 통해 새로운 값이 올 때마다 업데이트하는'Calendar' 인스턴스를 생성하십시오. 그런 다음 TextView와 최종적으로 데이터베이스에 삽입되는 값 모두에 대해이를 백업 데이터 모델로 사용할 수 있습니다. 이것은 내가 고려할 접근법 일뿐입니다. * 유일한 해결책은 아닙니다. 실제로 물건을 구현하는 방법을 결정하는 것은 당신에게 달려 있습니다. –

관련 문제