2012-10-31 29 views
1

我想比較用戶輸入的日期和今天的日期並相應地更新數據庫。這就是我怎麼做的..想要將日期與今天的日期進行比較並更新數據庫。

Calendar c = Calendar.getInstance(); 
    SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy"); 
    today = df.format(c.getTime()); 
    //=================================================================== 
    try{ 
    ContentValues val1 = new ContentValues(); 
    val1.put(CPUser.Data.TASK_TYPE, "Todays Task"); 
    getContentResolver().update(CPUser.Data.CONTENT_URI, val1, CPUser.Data.TASK_DUE_DATE + "=" +"'"+today+"'",null); 

    ContentValues val2 = new ContentValues(); 
    val2.put(CPUser.Data.TASK_TYPE, "Overdue Task"); 
    getContentResolver().update(CPUser.Data.CONTENT_URI, val2, CPUser.Data.TASK_DUE_DATE + "<" +"'"+today+"'",null); 

    ContentValues val3 = new ContentValues(); 
    val3.put(CPUser.Data.TASK_TYPE, "Active Task"); 
    getContentResolver().update(CPUser.Data.CONTENT_URI, val3, CPUser.Data.TASK_DUE_DATE + ">" +"'"+today+"'",null); 
    } 
    Catch(Exception ex) 
    { } 

回答

2

如果你想存儲日期在數據庫中的文本,你總是必須使用「YYYY-MM-DD」的格式,否則你將無法做比較除了相等(「=」)。我所做的是使用Unix Epoch將所有日期,時間和時間戳保存爲INT。這允許您以不同格式顯示日期(例如使用區域設置)來顯示日期,而無需先分析日期。它也允許任何類型的比較(等於,大於等)。功能簡單明瞭:

public static long timestampFromUnixEpoch(long unixepoch) { 
    if (unixepoch == 0) 
     return 0; 
    return (unixepoch * 1000) - TimeZone.getDefault().getRawOffset(); 
} 

public static long unixEpochFromTimestamp(long timestampMS) { 
    if (timestampMS == 0) 
     return 0; 
    return ((timestampMS + TimeZone.getDefault().getRawOffset())/1000); 
} 

public static long dateToUnixEpoch(Date date) { 
    if (date == null) 
     return 0; 
    return unixEpochFromTimestamp(date.getTime()); 
} 

public static Date unixEpochToDate(long unixepoch) { 
    if (unixepoch == 0) 
     return null; 
    return new Date(timestampFromUnixEpoch(unixepoch)); 
} 
相關問題