2012-04-28 65 views
1

我有一個簡單的待辦事項應用程序,其中每個「待辦事項」都有一個標題,說明,完成狀態,創建日期和修改日期。Android SQLite:長時間轉換爲日期並返回

Todo.java

package com.anna.todos.models; 

import java.util.Date; 

public class Todo { 
    private long id; 
    private String title; 
    private String text; 
    private boolean done; 
    private Date createdDate; 
    private Date modifiedDate; 

    public Todo() { 
    } 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getText() { 
     return text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    public boolean isDone() { 
     return done; 
    } 

    public void setDone(boolean done) { 
     this.done = done; 
    } 

    public Date getCreatedDate() { 
     return createdDate; 
    } 

    public void setCreatedDate(Date createdDate) { 
     this.createdDate = createdDate; 
    } 

    public Date getModifiedDate() { 
     return modifiedDate; 
    } 

    public void setModifiedDate(Date modifiedDate) { 
     this.modifiedDate = modifiedDate; 
    } 
} 

的創建的日期和修改的日期被存儲在SQLite數據庫爲整數。當我從數據庫中獲取它們時,我希望能夠將它們正確地轉換爲Date對象,並且當我去保存待辦事項時,我希望能夠獲得這些Date對象的整數或長整數。 (這是根據來自另一個StackOverflow post的建議完成的)。

下面是我用來從數據庫中獲取的日期代碼:

createdDate = new Date(cursor.getInt(4) * 1000); 
    modifiedDate = new Date(cursor.getInt(5) * 1000); 

並保存日期....

createdDate = Calendar.getInstance().getTime(); 
    values.put(DatabaseHelper.TODO_CREATED_DATE, createdDate.getTime() * 1000); 

我現在的問題是創建和修改日期未被正確轉換。下面是從數據庫加載日期的調試語句:

04-29 09:21:35.649:I/TodoEditActivity(3954):populateFields()=> createdDate = 01 Jan 1970 10:33:01 04 -29 09:21:35.649:I/TodoEditActivity(3954):populateFields()=> modifiedDate = 1970年1月1日10時34分19秒

以及保存日期的調試聲明:

04-29 09:22:00.653:I/TodoEditActivity(3954):saveTodo()=> createdDate = 01 Jan 1970 10:33:01 04-29 09:22:00.653:I/TodoEditActivity(3954):saveTodo()=> modifiedDate = 29 Apr 2012 09:22:00

有什麼我應該做的,以解決這個問題?

+1

我會問自己,爲什麼modifiedDate似乎是唯一的一個工作 – mindandmedia 2012-04-28 23:55:20

+0

事實證明,我將cursor.getInt的返回值乘以另一個int,而不是長的 – MissPiplup 2012-04-29 00:19:01

回答

0

我懷疑存儲在數據庫中createdDate的值是0(或一個小值)。嘗試將一個變量設置爲cursor.getInt(4)並進行調試,以便您可以驗證該值是否爲您提供當前日期。如果使用Date.getTime()或Calendar.getTimeInMillis(),則不需要乘以1000。

+0

但我仍然希望能夠用我的日期對象進行計算.... – MissPiplup 2012-04-29 00:37:04

+0

你仍然可以。按照您現在正在做的那樣存儲日期,並在需要時將它們轉換回日期。然後,您可以使用長整數或日期進行計算 - 無論您最喜歡哪一個。 – 2012-04-29 08:28:53

相關問題