studio parse example ejemplo dateformat java android simpledateformat

java - parse - Advertencia de SimpleDateFormat Para obtener el formato local, use getDateInstance(), getDateTimeInstance(), o getTimeInstance(),



simpledateformat parse (3)

Actualmente está utilizando el SimpleDateFormat(String) . Esto implica la configuración regional predeterminada y, como lo indica la documentación de la configuración regional , desconfíe de la configuración regional predeterminada ya que se pueden producir resultados inesperados en varios sistemas.

En su lugar, debe utilizar el constructor SimpleDateFormat (String, Locale) . Tomará un parámetro adicional: la configuración regional que desea utilizar. Si desea asegurarse de que la salida sea legible por una máquina de manera consistente (siempre se ve igual, independientemente de la configuración regional real del usuario), puede seleccionar Locale.US . Si no le importa la capacidad de redacción de la máquina, puede configurarla explícitamente para que use Locale.getDefault() .

Usar esos en tu código de ejemplo se vería así:

// for US SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy", Locale.US); // or for default SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy", Locale.getDefault());

¿Debo preocuparme por esta advertencia? ¿Qué pasa si ignoro la advertencia?
¿Qué significa esta advertencia?
Para obtener el formato local, use getDateInstance() , getDateTimeInstance() , o getTimeInstance() , o use el new SimpleDateFormat(String template, Locale locale) por ejemplo, Locale.US para las fechas ASCII .
En la 2ª línea del código de abajo. La aplicación está funcionando bien con el código. Quería mostrar fecha por ejemplo, 19 Nov 2014 .

public static String getFormattedDate(long calendarTimeInMilliseconds) { SimpleDateFormat sdfDate = new SimpleDateFormat("d MMM yyyy"); //ON THIS LINE Date now = new Date(); now.setTime(calendarTimeInMilliseconds); String strDate = sdfDate.format(now); return strDate; }

Creo que esta es una forma correcta de formatear la fecha como se muestra here .


Lo mismo para kotlin

//example long 1372339860 fun getDateTime(unixSeconds: Long): String { val date = java.util.Date(unixSeconds * 1000L) val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss z", Locale.getDefault()) return simpleDateFormat.format(date) }

Llame así getDateTime(1372339860)

Volverá 27.6.2013 15:31:00 GMT +2 El GMT+2 porque estoy en Alemania y tenemos horario de verano. Puedes usar Locale.US también.


Puede ignorarlo, pero la advertencia está ahí para hacerle saber que las fechas pueden mostrarse inesperadamente para los usuarios que usan un idioma diferente. Si desea forzar el formato en su propia configuración regional, use Locale.US (o la configuración regional que coincida con sus requisitos de formato). De lo contrario, utilice uno de los métodos getInstance () para el formato localizado.