代码之家  ›  专栏  ›  技术社区  ›  AndroidDev21921

检查在android中打开应用程序之间是否已经过了1小时?

  •  0
  • AndroidDev21921  · 技术社区  · 9 年前

    我正在检查用户执行操作后是否已经过了一个多小时。

    目前,我将日期/时间存储在sharedpreferences中,然后当用户再次点击该活动时,我用当前时间检查sharedpref时间。例如,如果用户今天上午10点在应用程序中做了一些事情,然后明天凌晨3点回来,我想知道是否已经过了一个多小时。

    我尝试了SO提供的一系列答案,但运气不佳。似乎sharedpref时间被保存为日期“8/17/16”,而不是timeInMili。任何帮助都会很好。

    活动方法:

    lastConfigCheck = prefs.getString("LAST_CONFIG_CHECK_DATE", null);
    
    
    
        if (lastConfigCheck == null) {
    
            lastConfigCheck = String.valueOf(System.currentTimeMillis());
    
            editor.putString("LAST_CONFIG_CHECK_DATE", lastConfigCheck);
            editor.apply();
    
            Log.d("hellohours", lastConfigCheck);
    
        }
    
        else  {
    
            long todaysTime = System.currentTimeMillis();
    
            Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);
    
            if (timeElapsed > 120000) {
    
                Log.d("hellohours", "boom digity");
    
            } else {
    
                Log.d("hellohours", "boom awesome");
            }
    
        }
    

    当我检查logcat时,它指出

     Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck);
    

    原因:

    "java.lang.NumberFormatException: Invalid long: "8/17/2016"'
    
    1 回复  |  直到 9 年前
        1
  •  3
  •   sumandas    9 年前

    由此产生的价值:

    System.currentTimeMillis()
    

    返回为Long。因此,请尝试在共享首选项中尽可能长地存储该值。

    editor.putLong("LAST_CONFIG_CHECK_DATE", System.currentTimeMillis());
    

    Developer Forum

    一旦完成,就不必进行任何转换,数学运算也会很容易。