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
.Cómo guardar y recuperar la fecha en SharedPreferences
39
A
Respuesta
131
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();
Usted puede usar esto para guardar o recuperar Date
/Time
datos de SharedPreferences
como esto
Guardar:
SharedPreferences prefs = ...;
prefs.edit().putLong("time", date.getTime()).apply();
Leer de nuevo:
Date myDate = new Date(prefs.getLong("time", 0));
Editar
Si desea almacenar el TimeZone
adicionalmente, se podría escribir algún método de ayuda para ese propósito, algo como esto (no los he probado, no dude en corregirlo, si algo está mal):
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();
}
Cuestiones relacionadas
- 1. Guardar en SharedPreferences desde la aplicación DialogPreference personalizada
- 2. Guardar y recuperar un UIImage en CoreData
- 3. Guardar y recuperar RichTextBox.Document from/to SQL?
- 4. NSUserDefaults.StandardUserDefaults - guardar y recuperar un Dictionary
- 5. ¿Cómo almacenar y recuperar mapa de bits en sharedPreferences en Android?
- 6. ¿Cómo se usa SharedPreferences para guardar más de un valor?
- 7. ¿Cómo usar SharedPreferences para guardar un URI o cualquier almacenamiento?
- 8. ¿Cómo guardar la fecha y hora sin el tiempo?
- 9. ¿Cómo guardar y recuperar el entrenamiento de PyBrain?
- 10. ¿Cómo puedo almacenar una matriz de enteros en SharedPreferences?
- 11. Opción múltiple ListView y SharedPreferences
- 12. Guarde los archivos de SharedPreferences en el directorio personalizado u obtenga el directorio predeterminado de SharedPreferences
- 13. Tamaño máximo de la clase SharedPreferences
- 14. x86_64 alinear pila y recuperar sin guardar registros
- 15. Matriz de cadenas en SharedPreferences
- 16. cifrar datos en SharedPreferences
- 17. Cómo guardar una fecha en segundos en Oracle
- 18. NullPointerException en SharedPreferences Android
- 19. Android SharedPreferences en Fragment
- 20. Django: recuperar correctamente los datos en la fecha y la hora son mayores que ahora
- 21. Recuperar la fecha del lunes de la semana actual
- 22. ¿Cómo almacenar un objeto Date en SharedPreferences?
- 23. ¿Qué es SharedPreferences en Android?
- 24. obtener SharedPreferences de un servicio
- 25. Cómo obtener la fecha y hora del sello de fecha y hora
- 26. Como llegar hora y la fecha del sello de fecha y hora en php
- 27. Archivo SharedPreferences
- 28. Android - ¿Cómo usar las SharedPreferences en la clase no activa?
- 29. Cómo recuperar la clave principal al guardar un nuevo objeto en Anorm
- 30. java imap recuperar mensajes desde una fecha
Esto funciona. Debe marcarlo como correcto. – rplankenhorn
Parece que de esta manera no es aplicable para las fechas específicas de la zona horaria. Caso de uso: almacenar fechas para el usuario viajero – Sergii