2012-07-18 356 views
3

在我的Android應用程序中,如果自上次導入至少X小時後才重新導入數據,檢查當前時間距「last_updated」時間是否超過一個小時

我存儲的LAST_UPDATED時間在我的SQLite數據庫格式爲:2012/07/18 00:01:40

我怎樣才能得到「從此小時」或類似的東西?

我的代碼迄今:

package com.sltrib.utilities; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 

public class DateHelper 
{ 

    public static String now() 
    { 
     Calendar currentDate = Calendar.getInstance(); 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     String dateNow = formatter.format(currentDate.getTime()); 
     //System.out.println("Now the date is :=> " + dateNow); 
     return dateNow; 
    } 

    public static int hoursAgo(String datetime) 
    { 
     //return the number of hours it's been since the given time 
     //int hours = ?? 
     //return hours; 
    } 

} 
+0

你可以只保存在毫秒的時間。然後,你只需要計算差異,並以每小時毫秒數爲單位來劃分它 – Weeman 2012-07-18 00:32:52

回答

6

你會想兩個Calendar S或Date S之間做數學。

注意:不推薦使用Date的方面,請參閱下面的Calendar

下面是一個使用Date一個例子:

public static int hoursAgo(String datetime) { 
    Date date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse(datetime); // Parse into Date object 
    Date now = Calendar.getInstance().getTime(); // Get time now 
    long differenceInMillis = now.getTime() - date.getTime(); 
    long differenceInHours = (differenceInMillis)/1000L/60L/60L; // Divide by millis/sec, secs/min, mins/hr 
    return (int)differenceInHours; 
} 

這裏有一些涉及try/catch塊(你或許應該throws處理),但是這是基本的想法。

編輯:由於Date部分已被棄用,這裏是使用Calendar同樣的方法:

public static int hoursAgo(String datetime) { 
    Calendar date = Calendar.getInstance(); 
    date.setTime(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss", Locale.ENGLISH).parse(datetime)); // Parse into Date object 
    Calendar now = Calendar.getInstance(); // Get time now 
    long differenceInMillis = now.getTimeInMillis() - date.getTimeInMillis(); 
    long differenceInHours = (differenceInMillis)/1000L/60L/60L; // Divide by millis/sec, secs/min, mins/hr 
    return (int)differenceInHours; 
} 
+0

對不起,應該是'getTime()';我已更正上述帖子。 – Eric 2012-07-18 00:32:21

+0

謝謝 - 我認爲這是行之有效的 - 將在早上覆查,並回復/標記/更新...等 – Dave 2012-07-18 02:14:29

+0

我改變它爲分鐘(和60比較),因爲我不確定90分鐘是否會返回1或2小時...等。所以..剛剛刪除了最後的60L和好去 - 它的作品!謝謝! – Dave 2012-07-18 02:35:16

相關問題