2012-06-04 14 views
5

que tiene una cadena de fecha y hora de entrada:Mostrar fecha en la localización actual

2012-06-04 15:41:28

me gustaría visualizar correctamente para varios países. Por ejemplo, en Europa tenemos dd.MM.aaaa mientras que Estados Unidos usa MM/dd/aaaa.

Mi código actual es la siguiente:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 
timedate.setText(dateObj.toLocaleString()); 

Pero no funciona exactamente como yo quiero (siempre me dan el "uniforme" resultado como "Jun 4, 2012 3:41:28 PM" , incluso en mi teléfono). ¿Qué estoy haciendo mal?

Respuesta

2

Prueba esto:

TextView timedate = (TextView) v.findViewById(R.id.report_date); 
SimpleDateFormat curFormater = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss"); 
curFormater.setTimeZone(TimeZone.getDefault()); 
Date dateObj = curFormater.parse(my_input_string); 

int datestyle = DateFormat.SHORT; // try also MEDIUM, and FULL 
int timestyle = DateFormat.MEDIUM; 
DateFormat df = DateFormat.getDateTimeInstance(datestyle, timestyle, Locale.getDefault()); 

timedate.setText(df.format(dateObj)); // ex. Slovene: 23. okt. 2014 20:34:45 
0

¿Usted intentó esta variante:

SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 

que ya ha recibido la documentación. Me refiero al uso del método format().

+0

Esto no está funcionando. ¿Dónde obtuviste System.err? Es Android. –

+0

Era solo una muestra, donde le mostraba el uso de los métodos 'SimpleDateFormat'. Necesita usar el método 'format()' para obtener un comportamiento ilusorio. – teoREtik

+0

Sé acerca de la función format(). Lo que no sé es cómo detectar la configuración regional actual (por ejemplo, EE. UU. O Europa) para formatearla correctamente. –

1

La forma más sencilla de obtener la fecha actual en la localización actual (locale dispositivo!):

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime()); 

Si usted quiere tener la fecha en diferentes estilos utilizan getDateInstance(int style) :

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime()); 

Otros estilos: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, etc. (use Ctrl + Espacio para ver todos ellos)

Si necesita el tiempo también:

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime()); 
Cuestiones relacionadas