2012-05-08 5 views
5

Я пытаюсь показать дату в андроиде с выбранным годом, месяцем и днем, используя DatePicker. У меня возникают проблемы с выбором выбранного года, месяца и дня и отображения их на экране в правильном формате для локали телефона без отображения времени.Показывать только дату и время на Android

Код в его нынешнем виде корректно отображает дату, но также отображает время.

StringBuilder string = new StringBuilder() 
    // Month is 0 based so add 1 
    .append(mYear).append("-") 
    .append(mMonth + 1).append("-") 
    .append(mDay); 

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

    try { 
     Date date = format.parse(string.toString()); 
     mDateDisplay.setText(date.toLocaleString()); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

mDateDisplay - это текстовое изображение.

Я не могу понять, как избавиться от времени, которое также отображается. Я сделал много документов для поиска и чтения, и я не мог понять это. Любая помощь будет оценена по достоинству.

ответ

6
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getContext()); 
mDateDisplay.setText(dateFormat.format(date)) 

Это будет учитывать настройки локали пользователей и отображать только дату.

Вот соответствующая документация: getDateFormat(Context context)

3
android.text.format.DateFormat df = new android.text.format.DateFormat(); 
df.format("yyyy-MM-dd", new java.util.Date()); 

или

android.text.format.DateFormat.format("yyyy-MM-dd", new java.util.Date()); 

см это LINK

Обновлено ::

вы также можете использовать formatter получить только дату, как показано ниже ::

mDateDisplay.setText(String.format("%1$tY %1$tb %1$td", date)); 
+1

Это не принимает во внимание региональные настройки телефона. – Lukazoid

0

я потратить час на это, наконец, нашли решение.

String datemillis = cursor.getString(cursor.getColumnIndex("field name on table")); 
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 



      try { 
       Date date = null; 
       date = df.parse(datemillis); 
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
       String shortTimeStr = sdf.format(date); 
       System.out.println(shortTimeStr); 
       Y=shortTimeStr; 
      } catch (ParseException e) { 
       // To change body of catch statement use File | Settings | File Templates. 
       e.printStackTrace(); 
      } 
       Toast.makeText(getApplicationContext(),Y, Toast.LENGTH_LONG).show(); 
0

попробуйте этот код

long date = System.currentTimeMillis(); 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
     SimpleDateFormat timeonly = new SimpleDateFormat("hh:mm"); 
     String dateString = sdf.format(date); 
     String timeString = timeonly.format(date); 
     //show present date 
     textView.setText(dateString); 

     //show present time 
     TextView.setText(timeString);