¿Cómo obtendría una cadena de fecha corta basada en la configuración regional para Android?
Estoy tratando de obtener una cadena de fecha con la forma abreviada del día de la semana y el mes, además del día del mes.
Por ejemplo, un usuario con un idioma inglés vería:
- ¿Permitiendo al usuario seleccionar el idioma / la configuración de la aplicación?
- Formato de moneda en Android utilizando separador decimal incorrecto
- Quiero mostrar el idioma Reginonal (Gurumukhi) en mi aplicación para Android
- Adición de cotizaciones en Java
- Cocos2d-x localización simplificado / chino tradicional
Mar 17 jun
y un usuario con una localización alemana vería:
Di 17 juni
He estado buscando en los documentos android.text.format.DateFormat
y el getBestDateTimePattern(Locale locale, String skeleton)
parecía que podría funcionar, pero requiere API 18+, así que no puedo usarlo.
¿Hay una manera de obtener este tipo de formato corto que se basa en la configuración actual del usuario?
- Android: elegir entre dos idiomas sin "locale"
- Android Serbio latino y Montenegro valora la carpeta de strings.xml
- Cómo quitar el campo SECONDS de un DateFormat
- ¿Cómo evitar la dirección automática de texto de derecha a izquierda para el hebreo y el árabe?
- Haciendo clic en un botón para cambiar el idioma
- Aplicación de Android con ActionBar NullPointerException con configuración regional no predeterminada
- Localización y travesaños
- Configurar el idioma de la aplicación en Preferencias de Android
Bueno, creo que finalmente averiguó esto:
int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_SHOW_WEEKDAY; dateTextView.setText(DateUtils.formatDateTime(this, millis, flags));
Para una localidad en inglés, obtendrá:
Miércoles, 18 de junio
y para una localidad alemana, obtendrá:
Mi., 18. Juni
y para una localidad francesa, obtendrá:
mer. 18 de junio
Debe utilizar getMeduimDateFormat(Context)
, esto obedece a la configuración regional actual ya las preferencias del usuario.
intente debajo del código: –
public class DateFormatDemoSO { public static void main(String args[]) { int style = DateFormat.MEDIUM; //Also try with style = DateFormat.FULL and DateFormat.SHORT Date date = new Date(); DateFormat df; df = DateFormat.getDateInstance(style, Locale.UK); System.out.println("United Kingdom: " + df.format(date)); df = DateFormat.getDateInstance(style, Locale.US); System.out.println("USA: " + df.format(date)); df = DateFormat.getDateInstance(style, Locale.FRANCE); System.out.println("France: " + df.format(date)); df = DateFormat.getDateInstance(style, Locale.ITALY); System.out.println("Italy: " + df.format(date)); df = DateFormat.getDateInstance(style, Locale.JAPAN); System.out.println("Japan: " + df.format(date)); } }
para más información vea el siguiente enlace: –
http://www.java2s.com/Code/Java/Data-Type/DateFormatwithLocale.htm
Joda-Time
Utilice la biblioteca Joda-Time .
DateTimeFormatter formatter = DateTimeFormat.forStyle( "S-" ).withLocale( java.util.Locale.getDefault() ); // "S" for short date format. "-" to suppress the time portion. Specify locale for cultural rules about how to format a String representation. DateTime dateTime = new DateTime( someDateObject, DateTimeZone.getDefault() ); // Convert a java.util.Date object to an org.joda.time.DateTime object. Specify time zone to assign to DateTime. String output = formatter.print( dateTime ); // Generate String representation of date-time value.