在android中获得时差

时间:2013-10-13 05:08:48

标签: android

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

我知道

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

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

2 个答案:

答案 0 :(得分: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();
    }

}

答案 1 :(得分:0)

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

首先,回答您的实际问题:System.currentTimeMillis()返回自“epoch”(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和preferences)上重用一些变量,但是我这样做是为了让你理解这个概念并自己实现它而不仅仅是复制代码。无论如何,我认为这样做,祝你好运!