2014-07-18 3 views
1

시스템 로캘에 따라 Date의 형식을 지정하려고합니다. 내가 DateFormat을 사용할 수 있다는 것을 알고 있지만, 제대로 이해하지 못하는 것 같습니다! 나는 또한 SimpleDateFormat을 시도했으나 로케일을 존중하지 않으며 대부분은 사용되지 않습니다!DatePicker 형식 날짜가 시스템 로캘

다음은 현재 코드입니다. EditText에 포커스가있을 때 DatePickerDialog이 표시됩니다. 피드백 보내기 원인 DateFormat null을 반환하기 때문에이 문제는 NullPointerException 발생합니다!

내가 뭘 잘못하고 있니? 아무도 도와주지 못하니?

public void onFocusChange(View v, boolean hasFocus) { 

    if (v == txtDate) { 
     if (hasFocus == true) { 

      // Process to get Current Date 
      final Calendar c = Calendar.getInstance(); 
      mYear = c.get(Calendar.YEAR); 
      mMonth = c.get(Calendar.MONTH); 
      mDay = c.get(Calendar.DAY_OF_MONTH); 

      // Launch Date Picker Dialog 
      DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 

       @Override 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
        // Display Selected date in edit text 
        String selectedDate = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year; 
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
        Date date = null; 
        try { 
         date = sdf.parse(selectedDate); 
        } catch (ParseException e) { 
         // handle exception here ! 
        } 

        java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(activityname.this); 
        String s = dateFormat.format(date); 
        txtDate.setText(s); 
       } 
      }, mYear, mMonth, mDay); 
      dpd.show(); 
     } 
    } 
} 

답변

1

당신은 현재 로케일에 따라 Date의 형식을 DateFormat를 사용할 수 있습니다

Date date = new Date(); 
DateFormat format = DateFormat.getDateInstance(); 
String formatted = format.format(date); 

가 따라가 Date는 다른 방식으로 포맷되어 사용 DateFormat의 어떤 인스턴스 :

  1. DateFormat.getDateInstance() : 날짜 만 출력합니다.
  2. DateFormat.getDateTimeInstance() : 출력 날짜와 시간
  3. DateFormat.getTimeInstance() : 출력 시간을 단

그러나 따로 당신은 아무것도 할 필요가 없습니다에서. DateFormat은 모든 것을 처리하고 Date의 형식을 올바르게 지정합니다.

DateFormatin the documentation에 대한 자세한 정보를 찾을 수 있습니다.

내가 도와 드릴 수 있기를 바랍니다. 질문이 있으시면 언제든지 문의하십시오.

+0

빠른 답장을 보내 주셔서 감사합니다. 간단하게 들리지만 나는 여전히 투쟁합니다. 나는 이것을 지금 가지고있다.'Date date = new Date(); DateFormat 형식 = DateFormat.getDateInstance(); formatted = format.format (date); txtDate.setText (formatted);''getDateInstance()'는 DateFormat 유형에 대해서는 정의되지 않았고, DateFormat 유형의'format'은 인수에 적용되지 않습니다 (Date) – sascha

+0

잘못된'DateFormat'을 사용하고 있기 때문입니다. 'DateFormat'이라는 클래스가 여러 개 있습니다. 파일 상단에서 가져 오기를 확인하십시오. 필요한 것은'import java.text.DateFormat;'입니다. –

+0

그 트릭을 했어! 'import android.text.format.DateFormat;'이 TimePicker'DateFormat.is24HourFormat (this)'에 대해 사용하고 있는데, 이것은 java가 아닌 DateFormat 가져 오기를 제거해야만했던 것과 같은 문제로 더 이상 작동하지 않습니다. . 둘 다 가질 수는 없지, 그렇지? 괜찮으 시다면'DateFormat.is24HourFormat (this)'에 대한 제안도 있으십니까? – sascha

관련 문제