有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android SQLite:将long转换为Date并返回

我有一个简单的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数据库中。当我从数据库中获取它们时,我希望能够正确地将它们转换为日期对象,当我要保存todo时,我希望能够获取这些日期对象的整数或长等价物。(这是根据另一位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 1970年1月10:33:01 04-29 09:21:35.649:I/TodoEditActivity(3954):populateFields()=>;修改日期=1970年1月1日10:34:19

以及用于保存日期的调试语句:

04-29 09:22:00.653:I/TodoEditActivity(3954):saveTodo()=>;createdDate=01 1970年1月10:33:01 04-29 09:22:00.653:I/TodoEditActivity(3954):saveTodo()=>;修改日期=2012年4月29日09:22:00

我应该做些什么来解决这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    我怀疑数据库中存储的createdDate的值是0(或一个小值)。尝试将变量设置为游标。getInt(4)并对其进行调试,以便验证该值是否为您提供了当前日期。如果使用Date,则不需要乘以1000。getTime()或日历。getTimeInMillis()