1

私はシンプルなtodoアプリを持っており、各'todo'にはタイトル、説明、完了ステータス、作成日、変更日があります。

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オブジェクトに正しく変換できるようにしたいのですが、ToDoを保存するときに、それらのDateオブジェクトの整数またはそれに相当するものを取得できるようにしたいと思います。(これは、別のStackOverflow投稿からの提案に従って行われました)。

以下は、データベースから日付を取得するために使用したコードです。

    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() => modifyDate = 01 Jan 1970 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() => modifyDate = 29 Apr 2012 09:22:00

これを修正するために私がすべきことはありますか?

4

1 に答える 1

0

データベースに保存されているcreatedDateの値が0(または小さい値)であると思われます。変数をcursor.getInt(4)に設定してデバッグし、値が現在の日付を示していることを確認できるようにします。Date.getTime()またはCalendar.getTimeInMillis()を使用する場合は、1000を掛ける必要はありません。

于 2012-04-29T00:24:35.467 に答える