2016-11-10 82 views
-2

我开始Java并且我被要求编写一个类myDate。这样的班级有年,月,日的字段。日期字段的Java getter和setter

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

setDate(long timeElapsed) 

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

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

如何计算“长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类中显示日期?我一直在研究这个问题一段时间没有成功。

我将非常感谢您的反馈。

尊敬,
豪尔赫·马尔多纳多

+1

但是timeElapsed在给定时区之外没有意义。 –

+0

你的问题很混乱。 '年,月,日'来自哪里?你是问如何计算今天的日期和另一日期之间的经过时间?如果是这样,搜索堆栈溢出,因为这已经处理了很多次。此外,您正在使用现在由java.time类取代的麻烦的旧Leacy类。 –

回答

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

做你所需要的。

BTW在上面,你并不需要创建新的日期以获得时间值:

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

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

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