0

首先,我想存储用户午餐我的应用程序的当前时间。然后,当用户再次启动我的应用程序时,我也会获取当前时间并将当前时间与之前存储的时间进行比较,并检查时差是否变为“一天”。因为如果时差变为“一天”然后我会在我的应用程序中做一些事情。但我可以理解如何做到这一点。

我知道

Long tsLong = System.currentTimeMillis();
    String ts = tsLong.toString();

获取当前时间。这里实际上是什么“currentTimeMillis”???但我不明白我怎样才能达到我的总目标。请任何人都可以建议我如何解决这个问题?

4

2 回答 2

2

你需要使用完整的时间戳来得到你想要的......这是一个例子

public static void main(String[] args) {

    String dateStart = "01/14/2012 09:29:58";
    String dateStop = "01/15/2012 10:31:48";

    //HH converts hour in 24 hours format (0-23), day calculation
    SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

    Date d1 = null;
    Date d2 = null;

    try {
        d1 = format.parse(dateStart);
        d2 = format.parse(dateStop);

        //in milliseconds
        long diff = d2.getTime() - d1.getTime();

        long diffSeconds = diff / 1000 % 60;
        long diffMinutes = diff / (60 * 1000) % 60;
        long diffHours = diff / (60 * 60 * 1000) % 24;
        long diffDays = diff / (24 * 60 * 60 * 1000);

        System.out.print(diffDays + " days, ");
        System.out.print(diffHours + " hours, ");
        System.out.print(diffMinutes + " minutes, ");
        System.out.print(diffSeconds + " seconds.");

    } catch (Exception e) {
        e.printStackTrace();
    }

}
于 2013-10-13T05:20:57.097 回答
0

如果您想存储用户上次打开您的应用程序的时间,您可能需要使用 SharedPreferences 并存储用户打开您的应用程序的时间,然后将存储的值与下一次打开应用程序的时间进行比较,检查是否时差大于 1 天。

首先,回答您的实际问题: System.currentTimeMillis() 返回自“纪元”(1970 年 1 月 1 日 00:00:00)以来经过的毫秒数。它在文档上。

现在,为了存储用户打开你的应用程序的时间,你应该在你的主要活动的 onCreate 上做这样的事情(或者你的应用程序的 onCreate,取决于你的场景):

SharedPreferences preferences = getSharedPreferences(PREF_FILENAME, MODE_PRIVATE);
long openTime = System.currentTimeMillis();
preferences.edit()
        .putLong(OPEN_TIME_KEY, openTime)
        .commit();

最后,用于检查您的应用程序的最后一次和当前打开之间的时间差(您应该在第一个代码片段之前执行此操作,而不是在阅读之前覆盖存储的首选项):

long day = 24 * 60 * 60 * 1000; // Milliseconds in a day. Define this as a constant
SharedPreferences preferences = getSharedPreferences(PREF_FILENAME, MODE_PRIVATE);
long openTime = System.currentTimeMillis();
long lastTime = preferences.getLong(OPEN_TIME_KEY, 0);
if ((openTime - lastTime) > day) {
    // do your thing here
}

您显然应该在两个片段(openTime 和首选项)上重用一些变量,但无论如何我这样做是为了让您理解这个概念并自己实现它,而不仅仅是复制代码。无论如何,我认为这是工作,祝你好运!

于 2013-10-13T05:29:44.773 回答