在课堂上存储日期

时间:2014-09-29 09:04:51

标签: java class date constructor getter-setter

我正在尝试构建包含(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;
}

3 个答案:

答案 0 :(得分:1)

您的第一个选项是标准java.util.Datejava.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中使用时往往会出现问题。