用于日期字段的Java getter和setter

时间:2016-11-10 18:58:35

标签: java

我正在开始Java,我被要求写一个类myDate。这样的班级有年,月,日的字段。

我应该使用以下语法来设置日期:

setDate(long timeElapsed)

我知道我可以做到以下几点:

Date tempDate = new Date();
long lngDate = tempDate.getTime();
System.out.println("lngDate: " + lngDate);

如何计算给定年,月和日的“long timeElapsed”参数?

现在,我应该使用GregorianCalendar来显示日期,我已经完成了以下日期:

GregorianCalendar cal = new GregorianCalendar(year, month, day);
System.out.println("Year: " + cal.YEAR);
System.out.println("Month: " + cal.MONTH);
System.out.println("Day: " + cal.DAY_OF_MONTH);

但我得到的结果如下:

Year: 1
Month: 2
Day: 5

如何使用GregorianCalendar在myDate类中显示日期?我一直在研究这个问题但没有成功。

我非常感谢您的反馈。

尊敬,
豪尔赫马尔多纳多

2 个答案:

答案 0 :(得分:0)

只需调用以下方法即可从日历中获取日期:

cal.getTimeInMillis()

这是相应的类:

public class MyDate {

  public void setDate(long timeElapsed) {
     final GregorianCalendar cal = new GregorianCalendar();
     cal.setTime(new Date(timeElapsed));

     this.year = cal.get(Calendar.YEAR);
     this.month = cal.get(Calendar.MONTH);
     this.day = cal.get(Calendar.DAY_OF_MONTH);
  }

  public long getLong() {
     final GregorianCalendar cal = new GregorianCalendar(this.year, this.month, this.day);
     return cal.getTimeInMillis();
  }

  private int year, month, day;
}

答案 1 :(得分:0)

Calendar.YEAR以及MONTH和DAY_OF_THE_MONTH是在get()方法中使用的常量。所以

System.out.println("Year: " + cal.get(Calendar.YEAR));
System.out.println("Month: " + cal.get(Calendar.MONTH));
System.out.println("Day: " + cal.get(Calendar.DAY_OF_MONTH));

做你需要的。

顺便提一下,你不需要创建新的日期来获得时间价值:

long lngDate = System.currentTimeMillis();
System.out.println("lngDate: " + lngDate);

值是一样的。创建新日期时,它使用System.currentTimeMillis()

PS。请记住,cal.get(Calendar.MONTH)返回月号-1。 Jan是0月,2月是1月,依此类推。