Ho bisogno di salvare alcune date in SharedPreferences
in Android e recuperarlo. Sto creando un'app di promemoria utilizzando AlarmManager
e ho bisogno di salvare l'elenco delle date future. Deve essere in grado di recuperare come millisecondi. Per prima cosa ho pensato di calcolare il tempo tra oggi, ora e ora futura e memorizzare in preferenze condivise. Ma quel metodo non funziona dal momento che ho bisogno di usarlo per AlarmManager
.Come salvare e recuperare la data in SharedPreferences
39
A
risposta
131
Per salvare e caricare una data precisa, è possibile utilizzare la rappresentazione long
(numero) di un oggetto Date
.
Esempio:
//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();
È possibile utilizzare questo per salvare o recuperare Date
/Time
dati da SharedPreferences
come questo
Save:
SharedPreferences prefs = ...;
prefs.edit().putLong("time", date.getTime()).apply();
Leggi indietro:
Date myDate = new Date(prefs.getLong("time", 0));
Modifica
Se si desidera memorizzare il TimeZone
Additionaly, si potrebbe scrivere qualche metodo di supporto a tale scopo, qualcosa di simile (io non li ho ancora testato, sentitevi liberi di correggilo, se qualcosa non va):
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();
}
Problemi correlati
- 1. Salvare i file SharedPreferences nella directory personalizzata o ottenere la directory SharedPreferences predefinita
- 2. Come archiviare e recuperare bitmap in sharedPreferences in Android?
- 3. Come salvare e recuperare i dati contenteditable
- 4. Come utilizzare SharedPreferences in Xamarin.Android?
- 5. Memorizza cookie in sharedpreferences
- 6. Come utilizzare SharedPreferences per salvare più di un valore?
- 7. SharedPreferences Android, come salvare una semplice variabile int
- 8. Come salvare la data e l'ora in cui un oggetto di Core Data è creato
- 9. come salvare e recuperare i dati dalla memoria locale Angular2?
- 10. Come inserire e recuperare l'UUID in Core Data
- 11. Come analizzare ANR in sharedPreferences
- 12. Android: Impossibile creare la directory per il file SharedPreferences
- 13. Quante volte dovrei salvare in Core Data?
- 14. Come accedere a sharedpreferences in SherlockFragment
- 15. Come utilizzare SharedPreferences
- 16. SharedPreferences Cancella/Salva
- 17. Differenza tra commit e applica in Android SharedPreferences
- 18. Come convertire la data del testo in data e ora?
- 19. SharedPreferences Android in Fragment
- 20. Come posso memorizzare un array intero in SharedPreferences?
- 21. django: recuperare correttamente i dati in cui la data e l'ora sono superiori ora
- 22. Python + eyeD3: impossibile salvare la data sui metadati mp3
- 23. Android: modifica SharedPreferences di un'altra app
- 24. SharedPreferences da diverse attività
- 25. Come racchiudere la classe in java e salvare l'interfaccia?
- 26. Come utilizzare SharedPreferences per salvare un URI o uno spazio di archiviazione?
- 27. come faccio a recuperare data/ora come UTC
- 28. get SharedPreferences da un servizio
- 29. convertire la data in data e ora in javascript?
- 30. Salvataggio in SharedPreferences da DialogPreference personalizzato
Questo funziona. Dovresti contrassegnarlo come corretto. – rplankenhorn
Sembra che questo modo non sia applicabile per le date specifiche del fuso orario. Caso d'uso: memorizza le date per l'utente che viaggia – Sergii