1

将时间存储到 SharedPreferences 的正确方法是什么?这就是我的想法,但我收到一个错误:类型不匹配:无法从 Time 转换为 long。我应该使用什么格式来存储它?

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();
long time2 = today;
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putLong("lastUpdated", time2);
editor.commit();
4

3 回答 3

2

您是否需要维护时区本身,或者只是表示时间的瞬间?如果是后者,只需调用Time.toMillis将返回一个long. 如果您还需要保留时区,我只需将时区 ID 存储在单独的字符串中。

然后,您可以Time通过创建一个新实例(具有适当的时区)并调用Time.set.

(您需要根据您的确切上下文确定是传递还是true传递。文档中有一些建议。)falseignoreDst

于 2013-08-09T12:42:48.093 回答
1

您可以使用:

SharedPreferences preferences = null;
preferences = act.getSharedPreferences("PREFS_NAME",
                Activity.MODE_PRIVATE);
preferences.edit().putString("TIME", getCurrentTimeDate())
                    .commit();

并使用此方法获取时间。

private String getCurrentTimeDate() {

        Calendar calendar = new GregorianCalendar();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

        return formatter.format(calendar.getTime());
    }
于 2013-08-09T15:09:21.680 回答
0

使用日期而不是时间:

Date today = new Date();
long time2 = today.getTime();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putLong("lastUpdated", time2);
editor.commit();
于 2013-08-09T12:44:14.247 回答