usuario usar studio sirve sesion que preferencias preferencia pedir para mediante guardar editar datos contraseña como clase archivos almacenamiento java android date calendar sharedpreferences

java - usar - pedir datos en android studio



Cómo guardar y recuperar la fecha en SharedPreferences (1)

Necesito guardar algunas fechas en SharedPreferences en android y recuperarlo. Estoy construyendo la aplicación de recordatorio usando AlarmManager y necesito guardar la lista de fechas futuras. Debe poder recuperar en milisegundos. Primero pensé en calcular el tiempo entre hoy, hora actual y hora futura, y almacenar en preferencia compartida. Pero ese método no funciona, ya que necesito usarlo para AlarmManager .


Para guardar y cargar la fecha exacta, puede usar la representación long (número) de un objeto Date .

Ejemplo:

//getting the current time in milliseconds, and creating a Date object from it: Date date = new Date(System.currentTimeMillis()); //or simply new Date(); //converting it back to a milliseconds representation: long millis = date.getTime();

Puede usar esto para guardar o recuperar datos de Date / Time de SharedPreferences como este

Salvar:

SharedPreferences prefs = ...; prefs.edit().putLong("time", date.getTime()).apply();

Léelo de nuevo:

Date myDate = new Date(prefs.getLong("time", 0));

Editar

Si desea almacenar TimeZone adicionalmente, podría escribir algún método auxiliar para ese fin, algo como esto (no los he probado, puede corregirlo si algo no funciona):

public static Date getDate(final SharedPreferences prefs, final String key, final Date defValue) { if (!prefs.contains(key + "_value") || !prefs.contains(key + "_zone")) { return defValue; } Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(prefs.getLong(key + "_value", 0)); calendar.setTimeZone(TimeZone.getTimeZone(prefs.getString(key + "_zone", TimeZone.getDefault().getID()))); return calendar.getTime(); } public static void putDate(final SharedPreferences prefs, final String key, final Date date, final TimeZone zone) { prefs.edit().putLong(key + "_value", date.getTime()).apply(); prefs.edit().putString(key + "_zone", zone.getID()).apply(); }