【发布时间】:2012-04-29 08:24:35
【问题描述】:
我有一个简单的待办事项应用程序,其中每个“待办事项”都有标题、描述、完成状态、创建日期和修改日期。
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=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() => modifiedDate=29 Apr 2012 09:22:00
我应该做些什么来解决这个问题?
【问题讨论】:
-
我会问自己,为什么 modifiedDate 似乎是唯一的一个
-
事实证明,我将 cursor.getInt 的返回值乘以另一个 int 而不是 long