2010-04-09 12 views
9

estoy recibiendo la hora mediante un selector de tiempo y mostrar la hora en la vista de texto usando siguiente código ...Visualización de la hora en formato AM/PM en el androide

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     Toast.makeText(SendMail.this, "Your Appointment time is "+hourOfDay+":"+minute, Toast.LENGTH_SHORT).show(); 
     TextView datehid = (TextView)findViewById(R.id.timehidden); 
     datehid.setText(String.valueOf(hourOfDay)+ ":"+(String.valueOf(minute))); 
    } 
}; 

Ahora, el problema es cuando establezca la hora como a las 8:00 p.m. y luego la hora se muestra como 20: 0 ... Quiero mostrar la hora como a las 8:00 p.m. ... ¿Cómo puedo hacer eso?

+1

Mucha gente ha respondido a sus preguntas, que simplemente no responde, no se marca como respondida. Deja poca motivación para ayudarte. – synic

+1

Además, muchas de sus preguntas SON, de hecho, respondidas, pero luego continúa para hacer MÁS preguntas en los comentarios, y todavía deja la pregunta sin respuesta. Debe marcarlos como respondidos, y luego hacer una nueva pregunta. – synic

+0

Todavía soy un novato en Stack Overflow. De ahora en adelante tomaré tus sugerencias y lo haré en consecuencia ... Gracias por tus valiosas sugerencias ... –

Respuesta

16

He hecho algo así para lograrlo.

private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     TextView datehid = (TextView)findViewById(R.id.timehidden); 
     if(hourOfDay>12) { 
      datehid.setText(String.valueOf(hourOfDay-12)+ ":"+(String.valueOf(minute)+"pm")); 
     } else if(hourOfDay==12) { 
      datehid.setText("12"+ ":"+(String.valueOf(minute)+"pm")); 
     } else if(hourOfDay<12) { 
      if(hourOfDay!=0) { 
       datehid.setText(String.valueOf(hourOfDay) + ":" + (String.valueOf(minute) + "am")); 
      } else { 
       datehid.setText("12" + ":" + (String.valueOf(minute) + "am")); 
      } 
     } 
    } 
};  
+0

+1 y gracias, tu idea funcionó para mí. –

31
private String getReminingTime() { 
    String delegate = "hh:mm aaa"; 
    return (String) DateFormat.format(delegate,Calendar.getInstance().getTime()); 
} 
+0

funcionó para mí, de manera muy simple –

+0

funcionó según las necesidades, gracias –

+0

¿Le da 'Am/PM' también? Parece que no lo hará – eRaisedToX

2

He hecho algo así para lograrlo.

TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() { 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
     myCalendar.set(Calendar.MINUTE, minute); 
     update_From_Time(); 
    } 
}; 

DateFormat frmTime=DateFormat.getTimeInstance(); 
protected void update_From_Time() { 
    s = frmTime.format(myCalendar.getTime()); 
    btnFromTime.setText(s); 
} 
+0

Este es el perfecto ... –

0

Esto funcionó para mí:

public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
    String am_pm = ""; 

    Calendar datetime = Calendar.getInstance(); 
    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    datetime.set(Calendar.MINUTE, minute); 

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

    String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ?"12":datetime.get(Calendar.HOUR)+""; 

    ((Button)getActivity().findViewById(R.id.btnEventStartTime)).setText(strHrsToShow+":"+datetime.get(Calendar.MINUTE)+" "+am_pm); 
} 
1
int am_pm=mycalendar.get(Calendar.AM_PM); 
String amOrpm=((am_pm==Calendar.AM)?"am":"pm"); 

Pero según mi SimpleDateFormat opinión sería el mejor uso, así:

final Calendar c = Calendar.getInstance(TimeZone.getTimeZone("America/Chicago")); 
SimpleDateFormat format = new SimpleDateFormat("h:mm a"); 
format.setTimeZone(c.getTimeZone()); 
String myFormatted time = format.format(c.getTime()); 

Es mejor que el calendario el valor predeterminado devolverá 00 para las 12 p. m., lo cual es posible que no desee.

5
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss a"); 
String currentTime = df.format(currnetDateTime.getTime()); 
+1

Para cualquiera que pueda estar adivinando qué es 'currnetDateTime' en el código de Pravin igual que yo;), es' Calendar currnetDateTime = Calendar.getInstance(); 'y luego' SimpleDateFormat df = nuevo SimpleDateFormat ("HH: mm: ss a"); Cadena currentTime = df.format (currnetDateTime.getTime()); ' – eRaisedToX

1
Calendar now = Calendar.getInstance(); 
if(now.get(Calendar.AM_PM) == Calendar.AM){ 
    // AM 
    System.out.println(""+now.get(Calendar.HOUR)+":AM"); 
}else{ 
    // PM 
    System.out.println(""+now.get(Calendar.HOUR)+":PM"); 
} 
Cuestiones relacionadas