将日期保存在内部存储中并稍后读取,以将其与当前日期进行比较

时间:2014-05-26 12:43:58

标签: java android

我正在处理的应用程序是让用户每天只参与一次,所以代码的第一行是

if(datar.equals("-1")){
    anim(se);
}

这意味着如果用户第一次打开应用程序我的主要功能anim(se)应该工作,之后变量数据将会改变,我会在每次用户打开应用程序时读取它,所以我想添加第二个部分到if语句检查自上次用户尝试该函数后24小时是否已经传递动画(se)我想要的是那样的东西

if(datar.equals("-1")){
    anim(se);
}
else
{
    if( "current date"-"last time the user use anim(se)">="24h")
         anim(se);
    else
       "the user still have to wait"
}

这样做我试图在动画(se)中保存日期

SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Calendar last = Calendar.getInstance();
String dt = formatter.format(last);

try {
     FileOutputStream outputStream = openFileOutput("data", Context.MODE_PRIVATE);
     outputStream.write(dt.getBytes());
     outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

但我在这里有一个问题,应用程序力量cloce ..:3

我确信阅读日期的其余代码并将其与当前日期进行比较也是错误的!

Calendar now,last = Calendar.getInstance();
String dt="";
        try {
            FileInputStream inputStream = openFileInput("date");
            BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
            StringBuilder total = new StringBuilder();
            String line;
            while ((line = r.readLine()) != null) {
                total.append(line);
            }
            r.close();
            inputStream.close();
            dt = total.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        java.util.Date lasta = null;
        try {
             lasta = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss").parse(dt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        last.setTime(lasta);
        long diff = now.getTimeInMillis() - last.getTimeInMillis();

      if(datar.equals("-1")){
            anim(se);
        }else
       {
           if(diff>7200)
                anim(se);
       }

任何想法怎么做:)?

2 个答案:

答案 0 :(得分:1)

只需使用SharedPreferences。您不需要单独的文件来存储此信息。

SharedPreferences pref = getApplicationContext().getSharedPreferences("pref_name", MODE_PRIVATE);
Editor editor = pref.edit();
editor.putString("time", "put_your_time_here");
editor.commit();

答案 1 :(得分:0)

试试这些:其中prefs是你的sharedpreferences对象,而不是boolean你传递给他一个字符串有值

    private void savePreferences(String key, boolean value) {
        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        Editor editor = prefs.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    private boolean loadSavedPreferences() {
        prefs = PreferenceManager.getDefaultSharedPreferences(this);
        return prefs.getBoolean("hasDataToSync", false);
    }