Android: ¿Cómo cambiar el formato de fecha de visualización de DatePicker de MM / dd / aaaa a dd / MM / aaaa?

He estado tratando de obtener una respuesta a esta pregunta durante bastante tiempo. También eché un vistazo al siguiente enlace: Android – Datepicker Widget Format . En mi teléfono / emulador (v 2.3.3) tanto el widget DatePicker como el diálogo no toman el formato de fecha especificado en la configuración (Configuración-> Fecha y hora-> Seleccionar formato de fecha). Siempre están en el formato “MM / dd / aaaa”. La configuración regional está configurada en inglés del Reino Unido.

Obtengo “d / MM / aaaa” cuando leo la configuración con:

Settings.System.getString(getContentResolver(), Settings.System.DATE_FORMAT);

¿Alguien tiene una idea sobre cómo cambiar el formato de fecha en una vista de DatePicker?

Para anular el formato DatePicker la mejor opción sería anular uno de sus constructores con una ligera modificación del código original. Puede editar ViewGroup en el código para usted, pero consideraría seriamente no hacerlo de esa manera.

  1. Crear clase LocalizedDatePicker
  2. Anular el DatePicker público (Context context, AttributeSet attrs, int defStyle) http://developer.android.com/reference/android/widget/DatePicker.html#DatePicker(android.content.Context , android.util.AttributeSet, int)
  3. Copie el código del constructor DatePicker original (puede que necesite seleccionar una twig diferente después de algunas pruebas, he vinculado el encabezado)
  4. Anula los métodos que llaman a reorderSpinners () para eliminar esa llamada.
  5. Reemplazar la línea inflater.inflate(R.layout.date_picker, this, true); con inflater.inflate(my.package.R.layout.localized_date_picker, this, true);
  6. Copie el diseño original date_picker.xml en su recurso local localized_date_picker.xml
  7. Edite el archivo para el orden deseado, ya que está editando esto, respete la localización de otros lugares y conserve una copia del original en su carpeta de diseño global y coloque el archivo local_date_picker.xml en la carpeta específica de su región. Dado que el diseño del sistema es Mes Día Año, las personas en otros lugares pueden esperar ese pedido.

Esa configuración es muy específica. Solo se aplica a las fechas de fechas que se muestran en “formato corto”. Siempre y cuando esté utilizando cualquier otra cosa (en este caso, el DatePicker parece estar usando “medio”), entonces esa configuración se descartará y el formato predeterminado de la configuración regional se hará cargo.

Puedo confirmar que si cambia el idioma de su teléfono (y, de hecho, la configuración regional) el orden de los elementos cambia en el selector de fecha. Lo que supongo significa que no estoy de acuerdo con la afirmación de Dan S de que “el sistema no usa ningún mecanismo para localizar el DatePicker”. Si miras el código, puedes ver eso (al menos desde 2.1), hay un método reorderPickers () que hace exactamente esto.

Inglés: Inglés

Francés: francés