2016-11-10 42 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月,依此類推。