2012-05-27 16 views
23

sólo quiero la fecha para aparecer así:formato a una fecha del calendario

Saturday, May 26, 2012 at 10:42 PM

Aquí está mi código hasta ahora:

Calendar calendar = Calendar.getInstance(); 
String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR); 

lastclick.setText(getString(R.string.lastclick) + " " + theDate); 

Esto muestra los números del mes, día, y año, pero tiene que haber una mejor manera de hacer esto? ¿No hay alguna forma simple de hacer esto como usar la función date() de PHP?

+1

sí. no veo por qué esto es tan difícil. – scarhand

Respuesta

14

Use la siguiente información para formatear la fecha según sea necesario. Consulte este LINK

Calendar calendar = Calendar.getInstance(); 
lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar)); 

donde% 1 $ tA para Staurday, % 1 $ tb de mayo,

y así sucesivamente ...

+1

He subido accidentalmente este, pero no puedo eliminar mi voto alternativo sin downvoting, que no es necesario. Éste funciona, pero el siguiente es más sencillo y mucho más fácil de leer. – craned

71
Calendar calendar = Calendar.getInstance(); 
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a"); 
System.out.println(format.format(calendar.getTime())); 

Ejecutar el código de seguridad emite la hora actual (por ejemplo, Saturday, May 26, 2012 at 11:03 PM).

Consulte el Android documentation for SimpleDateFormat para obtener más información.

La especificación de formato de SimpleDateFormat es similar a la de la función de PHP date:

echo date("l, M j, Y \a\\t g:i A"); 

Tienes razón. Comparado con el código de Java, el código de PHP es mucho más breve.

+0

Su código genera el formato específico que quería el asker, pero ¿qué sucede si quiero que el formato se configure de acuerdo con la configuración del sistema del usuario? En Windows, el código C# DateTime.ToLongDateString() genera eso. ¿Qué pasa si quiero lograr lo mismo en Android? –

+1

Consulte mi respuesta para obtener una solución que incluya la configuración regional. – String

10

Esto es en realidad un problema bastante sutil para conseguir la derecha y no he visto otra respuesta aquí en la forma que las direcciones tanto:

  • zona horaria El Calendar 's (lo que significa que podría estar mostrando una fecha diferente a lo Cal)
  • del dispositivo Locale (que afecta a la forma "correcta" para formatear fechas)

Las respuestas anteriores a esta pregunta ignorar la configuración regional y otras respuestas que implican la conversión a un Date ignorar la zona horaria. Así que aquí hay una solución más completa, en general:

Calendar cal = Calendar.getInstance(); // the value to be formatted 
java.text.DateFormat formatter = java.text.DateFormat.getDateInstance(
     java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT 
formatter.setTimeZone(cal.getTimeZone()); 
String formatted = formatter.format(cal.getTime()); 

Tenga en cuenta que es necesario utilizar java.text.DateFormat aquí, no androide del propio (confusamente-llamada) android.text.format.DateFormat.

Cuestiones relacionadas