日期字段的Java getter和setter

日期字段的Java getter和setter,java,Java,我开始学习Java,有人要求我写一个类myDate。此类类具有年、月和日字段 我应该使用以下语法设置日期: setDate(long timeElapsed) 我知道我可以做到以下几点: Date tempDate = new Date(); long lngDate = tempDate.getTime(); System.out.println("lngDate: " + lngDate); GregorianCalendar cal = new GregorianCalendar(ye

我开始学习Java,有人要求我写一个类myDate。此类类具有年、月和日字段

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

setDate(long timeElapsed)
我知道我可以做到以下几点:

Date tempDate = new Date();
long lngDate = tempDate.getTime();
System.out.println("lngDate: " + lngDate);
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);
如何从给定的年、月和日计算“长时间经过”参数

现在,我应该使用GregorianCalendar来显示日期,为此我已执行了以下操作:

Date tempDate = new Date();
long lngDate = tempDate.getTime();
System.out.println("lngDate: " + lngDate);
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类中显示日期?我已经在这个问题上工作了一段时间,但没有成功

我将非常感谢您的反馈

尊敬地,

Jorge Maldonado

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

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;
}

Calendar.YEAR以及月的月和日是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()


另外,请记住cal.get(Calendar.MONTH)返回第1个月。一月是第0个月,二月是第1个月,依此类推。

但是时间流逝在给定的时区之外没有任何意义。你的问题非常令人困惑。
年、月、日从何而来?你是在问如何计算今天的日期和另一个日期之间经过的时间吗?如果是这样,搜索堆栈溢出,因为这已经被处理过很多次了。此外,您使用的是麻烦的旧leacy类,现在已被java.time类取代。