0

我在日期选择器选择日期和得到的东西像这样的EditText上:13/12/2014但我要表明这样的:13 Dec 2014日期时间格式化

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

public EditText activity_edittext; 

public DatePickerFragment(EditText edit_text) { 
    activity_edittext = edit_text; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current date as the default date in the picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    // Create a new instance of DatePickerDialog and return it 
    return new DatePickerDialog(getActivity(), this, year, month, day); 
} 

    @Override 
    public void onDateSet(DatePicker view, int year, int month, int day) { 
     activity_edittext.setText(String.valueOf(day) + "/" + String.valueOf(month + 1) + "/" + String.valueOf(year)); 
    } 
} 

在相同的方式使用时间选择器,我得到的值一样这样的:21:12,我必须表现出这样的事情:9:12 pm

public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { 

     public EditText activity_edittext; 

     public TimePickerFragment(EditText edit_text) 
     { 
      activity_edittext = edit_text; 
     } 

     @Override 
     public Dialog onCreateDialog(Bundle savedInstanceState) { 
      // Use the current time as the default values for the picker 
      final Calendar c = Calendar.getInstance(); 
      int hour = c.get(Calendar.HOUR_OF_DAY); 
      int minute = c.get(Calendar.MINUTE); 

      // Create a new instance of TimePickerDialog and return it 
      return new TimePickerDialog(getActivity(), this, hour, minute, 
        DateFormat.is24HourFormat(getActivity())); 
     } 

     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      activity_edittext.setText(String.valueOf(hourOfDay) + ":" + String.valueOf(minute)); 
     } 
} 

回答

4

使用SimpleDateFormat格式化你的日期。您可以使用dd MMM yyyy格式将日期形成为13 Dec 201413/12/2014

try { 

    String dateString = String.valueOf(day) + "/" + String.valueOf(month + 1) + "/" + String.valueOf(year); 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Date date = sdf.parse(dateString); 

    sdf = new SimpleDateFormat("dd MMM yyyy"); 
    String formatedDate = sdf.format(date); 

} catch (Exception e) {} 

,或者简单,你可以使用DateFormatSymbols您的日期月份转换如下

String month = new DateFormatSymbols().getMonths()[month-1]; 

而且如下

try { 

    String timeString = String.valueOf(hourOfDay) + ":" + String.valueOf(minute); 
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
    Date time = sdf.parse(timeString); 

    sdf = new SimpleDateFormat("hh:mm a"); 
    String formatedTime = sdf.format(time); 

} catch (Exception e) {} 
+0

谢谢,我窃听为有用的,我用你的解决方案为DatePicker和神秘魔术师的解决方案的时间选择器,现在我很迷惑一个接受 – Sun 2014-12-08 08:39:37

+0

答案似乎对你更好,你可以检查,如接受。 – 2014-12-08 08:45:18

+0

这是更好的答案,因为它只适用于API,没有任何硬编码的字符串,也取决于系统区域设置,所以它是多语言 – mihail 2014-12-08 08:55:31

0
SimpleDateFormat formatter = new SimpleDateFormat ("dd M yyyy", Locale.getDefault()); 
Date date = null; 
try { 
    date = formatter.parse("your date here"); 
} catch (Exception e) { } 
1

要设置错误地与hh:mm a格式格式化时间为9:12 pm 。您需要检查哪个月,并基于它,您将需要添加其文本。

试试这个设置日期:

@Override 
public void onDateSet(DatePicker view, int year, int month, int day) { 
    String month_name=""; 
    switch(month) { 
     case Calendar.JANUARY: 
      month_name = "JAN"; 
     break; 
     case Calendar.FEBRUARY: 
      month_name = "FEB"; 

     case Calendar.MARCH: 
      month_name = "MAR"; 
     break; 
     case Calendar.APRIL: 
      month_name = "APR"; 

     case Calendar.MAY: 
      month_name = "MAY"; 
     break; 
     case Calendar.JUNE: 
      month_name = "JUN"; 

     case Calendar.JULY: 
      month_name = "JUL"; 

     case Calendar.AUGUST: 
      month_name = "AUG"; 
     break; 
     case Calendar.SEPTEMBER: 
      month_name = "SEP"; 
     case Calendar.OCTOBER: 
      month_name = "OCT"; 
     break; 
     case Calendar.NOVEMBER: 
      month_name = "NOV"; 
     break; 
     case Calendar.DECEMBER: 
      month_name = "DEC";  
     break; 
    } 
    activity_edittext.setText(String.valueOf(day) + " " + month_name + " " + String.valueOf(year)); 
} 

为12小时格式设置时间,您将需要相应地检查其时间,并设置文本:

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    String hour = ""; 
    String meridiem = ""; 
    Calendar datetime = Calendar.getInstance(); 
    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    datetime.set(Calendar.MINUTE, minute); 

    if (datetime.get(Calendar.AM_PM) == Calendar.AM) 
     meridiem = "AM"; 
    else if (datetime.get(Calendar.AM_PM) == Calendar.PM) 
     meridiem = "PM"; 

    hour = (datetime.get(Calendar.HOUR) == 0) ?"12":String.valueOf(datetime.get(Calendar.HOUR)); 
    activity_edittext.setText(hour + ":" + String.valueOf(minute) + " " + meridiem); 
} 

希望这有助于。

+0

谢谢,我挖掘为有用的,我用你的解决方案TimePicker和哈米德沙图解决方案的日期选取器,现在我很迷惑一个接受 – Sun 2014-12-08 08:39:08

+0

@孙,这没关系:)你可以接受哈米德的答案..快乐编码:) – 2014-12-08 08:40:00