java - 如何在 SharedPreferences 中保存和检索日期

标签 java android date calendar sharedpreferences

我需要在 android 的 SharedPreferences 中保存一些日期并检索它。我正在使用 AlarmManager 构建提醒应用程序,我需要保存 future 日期列表。它必须能够以毫秒为单位进行检索。首先,我想计算现在时间和 future 时间之间的时间并存储在共享偏好中。但该方法不起作用,因为我需要将它用于 AlarmManager

最佳答案

要保存和加载准确的日期,您可以使用 Date 对象的 long(数字)表示。

示例:

//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();

您可以使用它从 SharedPreferences 中保存或检索 Date/Time 数据,如下所示

保存:

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

回读:

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

编辑

如果你想额外存储 TimeZone,你可以为此编写一些辅助方法,类似这样(我没有测试过它们,如果有问题,请随时更正) :

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();
}

关于java - 如何在 SharedPreferences 中保存和检索日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12343014/

相关文章:

java - 如何检查Android中是否存在数据库?

android - 我们可以使用 Android 编程更改 NFC Type 2 标签的 UID 吗?

android - Eclipse Android 和 gitignore

MySQL 日期的 PHP 日期

Java 使用 Joda 时间将军事时间转换为民用时间

java - 如何计算单词之间有空格的字符串中单词的确切数量?

java - 如何在jFrame中for循环jPanel?

java - pymongo collection.find()与Java MongoDatabse.getCollection.find()

android - './gradlew -Dtest.single=SimpleTest test' 运行我拥有的所有测试

C#如何判断一个日期是否在距现在180天以内