我正在尝试构建包含(startDate_
)和(endDate_
)的类项目作为实例变量。我将日期存储在int类型中的问题。有更好的方法吗?如果是这样,我如何在构造函数和setter和getter中使用它们?我应该在这个课程中包含哪个库?
public class Project {
private int pid_;
private String name_;
private int statDate_;
private int endDate_;
public Project(int pid, String name, int statDate, int endDate)
{
pid_ = pid;
name_ = name;
statDate_ = statDate;
endDate_ = endDate;
}
// getter
public int getPid(){
return this.pid_;
}
public int getName(){
return this.name_;
}
public int getStatDate(){
return this.statDate_;
}
public int getendDate(){
return this.endDate_;
}
// setter
public void setPid(int Pid){
this.pid_ = Pid;
}
public void setName(String Name){
this.name_ = Name;
}
public void setStatDate(int StatDate){
this.statDate_ = StatDate;
}
public void setEndDate(int EndDate){
this.endDate_ = EndDate;
}
// methods
private void updateTask(String Name){
if (Name != null)
this.name_ = Name;
}
答案 0 :(得分:1)
您的第一个选项是标准java.util.Date
和java.util.Calendar
(自Java 1.0起可用)。默认情况下,您可以使用该功能,因此您不需要任何第三方库,但不幸的是,他们设计的课程设计不合理并且不推荐(这些课程并不能代表他们声称的内容)因为,它们很难使用,并且在某些情况下会违反线性问题。
存在另外两个(更好)选项。
如果您使用的是Java 8,则新的java.time package Java日期/时间类要好得多。有关详细信息,请参阅here。
否则,请查看广泛使用和理解的Joda-Time library。如果您只想要一个没有时间组件的日期,LocalDate
听起来像是一种可能的解决方案。
答案 1 :(得分:1)
对我来说,处理日期的最佳方法是毫秒。
这样,您可以将确切的日期存储在" 长"可变,您可以随时将其转换为您想要的任何格式(日期,日历和诸如此类)。
long statDate_ = System.currentTimeMillis();
long endDate_ = System.currentTimeMillis();
....
Date whatever = new Date(statDate_);
希望我有用:)
答案 2 :(得分:0)
日期是一个更简单的类,主要是出于向后兼容的原因。如果您需要设置特定日期或进行日期算术,请使用日历。日历还处理本地化。之前的Date日期操作函数已被弃用。
日期和日历都是可变的,在API中使用时往往会出现问题。