studio - Visualización de fechas en formato localizado en Android
string value android (1)
Si desea omitir el análisis, puede almacenar la fecha como un largo en su lugar. Luego, simplemente puede crear un nuevo objeto Fecha utilizando el análisis largo con cero.
Esto no está directamente relacionado con su pregunta, pero: Una cosa que debería considerar usar es android.text.format.DateFormat para obtener sus formateadores de fecha. De esta manera, formatea sus fechas / horas a la configuración regional del usuario en lugar de sus propios ajustes preestablecidos. También podría simplificar su código, ya que no necesita crear su propio SimpleDateFormat nunca más.
Con estas dos cosas en mente, puede deshacerse de las llamadas a sus propios métodos:
((TextView) view).setText(android.text.format.DateFormat.getDateFormat().format(new Date(cursor.getString(columnIndex))));
Actualmente estoy construyendo mi primera aplicación para Android. Con lo que estoy teniendo problemas es con el almacenamiento y la visualización localizada de las fechas en relación con un SimpleCursorAdapter
. Tengo una clase que encapsula el acceso a una base de datos SQLitedatabase
con tres tablas. Esta clase se encarga de almacenar todas las fechas en formato ISO ("yyyy-MM-dd"). Cuando los valores de fecha se leen de la base de datos y se muestran en la pantalla, quiero que se formateen en un formato localizado. Aquí está el enfoque que se me ha ocurrido. Utiliza un ViewBinder
para hacer el formateo:
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {
if (view.getId() == R.id.text1) {
((TextView) view).setText(getDateFormatView().format(
parseDatabaseDate(cursor.getString(columnIndex))));
return true;
} else if (view.getId() == R.id.text2) {
((TextView)view).setText(
cursor.getString(columnIndex));
return true;
} else {
return false;
}
}
});
getDateFormatView()
crea un objeto SimpleDateFormat
con un patrón que se lee desde strings.xml
. parseDatabaseDate()
realiza el análisis de la fecha de la base de datos con un SimpleDateFormat
que se construye utilizando un patrón constante yyyy-MM-dd
.
Aunque este código funciona bien, me pregunto si hay una mejor manera de hacerlo. Lo que no me gusta es que necesito:
- dos objetos
SimpleDateFormat
(uno se usa enparseDatabaseDate()
para analizar la cadena de fecha de la base de datosSQLiteDatabase
, el otro se usa para formatear el valor) - un objeto
java.util.Date
que se crea y se desecha de inmediato - Bastante de (en mi opinión) código repetitivo.
Entonces, es por eso que pregunto: ¿hay una mejor manera de mostrar las fechas en formato localizado?