2013-12-17 10 views
6

Ho problemi con la conversione del formato di 24 ore in formato 12 ore. Questo è il mio codiceFormato da 24 ore a formato 12 ore

private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
     new TimePickerDialog.OnTimeSetListener() { 

      @Override 
      public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
       // TODO Auto-generated method stub 
       ViewGroup vg=(ViewGroup) view.getChildAt(0); 
       hour = hourOfDay; 
       minutes = minute; 
       String am_pm = (hourOfDay < 12) ? "AM" : "PM"; 
       SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US); 
       String tme = hour +":"+ minutes+am_pm; 
       et1.setText(tme); 
      } 
     }; 

sposto al dialogo TimePicker dalla finestra di allarme perché non so come cambiare di 24 ore al formato 12 ore

et1.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       new TimePickerDialog(MainActivity.this, mTimeSetListener, hour, minutes, false).show(); 
      } 
     }); 

    } 

Questa è la prova che ho già girare l'impressione booleano a falso

risposta

11

Prova this-

private TimePickerDialog.OnTimeSetListener mTimeSetListener = 
new TimePickerDialog.OnTimeSetListener() { 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // TODO Auto-generated method stub 
     hour = hourOfDay; 
     minutes = minute; 
     String timeSet = ""; 
     if (hour > 12) { 
      hour -= 12; 
      timeSet = "PM"; 
     } else if (hour == 0) { 
      hour += 12; 
      timeSet = "AM"; 
     } else if (hour == 12){ 
      timeSet = "PM"; 
     }else{ 
      timeSet = "AM"; 
     } 

     String min = ""; 
     if (minutes < 10) 
     min = "0" + minutes ; 
     else 
     min = String.valueOf(minutes); 

     // Append in a StringBuilder 
     String aTime = new StringBuilder().append(hour).append(':') 
     .append(min).append(" ").append(timeSet).toString(); 
     et1.setText(aTime); 
    } 
}; 
+0

Grazie signore! .. funziona! – user3032164

1

Perché non utilizzare

timePicker.setIs24HourView(false);

+0

lo provo che già, ma il risultato è lo stesso .. Questo è solo una visione del tempo raccoglitrice. – user3032164

2

C'è un parametro del costruttore

public TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView) 

vedere docs. E per la formattazione uso android.text.format.DateFormat

+0

sì signore .. L'ho già fatto .. mi dispiace perché c'è una carenza di informazioni. – user3032164

1

Pls provare con questo codice

int Hour=0; 
int Minute=0; 
int new_hour=0; 
String new_minute=null; 
TimePickerDialog.OnTimeSetListener time = new TimePickerDialog.OnTimeSetListener() { 



public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     Hour = hourOfDay; 
     Minute = minute; 

     String time_form = hourOfDay + ":" + minute + ":00"; 
     int r = minute/10; 
     if (r == 0) { 
      new_minute = "0" + minute; 
     } else { 
      new_minute = minute + ""; 
     } 
     if (Hour > 12) { 
      new_hour = (hourOfDay - 12); 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " PM"); 
     } else if (Hour == 12) { 

      new_hour = hourOfDay; 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " PM"); 
     } 

     else { 
      new_hour = hourOfDay; 
      edit_text.setText(new StringBuilder().append(new_hour) 
        .append(":").append(new_minute) 
        + " AM"); 
     } 

    } 

}; 
4

I so che sono in ritardo, ma solo due righe lo rendono perfetto.

private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
      boolean isPM = (hourOfDay >= 12); 
      tvTime.setText(String.format("%02d:%02d %s", (hourOfDay == 12 || hourOfDay == 0) ? 12 : hourOfDay % 12, minute, isPM ? "PM" : "AM")); 
     } 
    }; 
0

Questo è il modo in cui l'ho fatto. Formati SimpleDateFormat prende https://developer.android.com/reference/java/text/SimpleDateFormat.html#format

TimePickerDialog timePickerDialog= new TimePickerDialog(NotificationActivity.this, 
    new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker timePicker, int hour, int minute) { 

      Time time = new Time(hour, minute, 0); 

      //little h uses 12 hour format and big H uses 24 hour format 
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mma"); 

      //format takes in a Date, and Time is a sublcass of Date 
      String s = simpleDateFormat.format(time); 
      toTime.setText(s); 
     } 
    }, hour, minute, false);