2011-07-16 26 views
0

這是我的代碼:java.util.Calendar是否可以通過方法傳遞?

import java.util.Calendar; 

import java.util.Locale; 

public class test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Calendar a = Calendar.getInstance(); 
     a.set(Calendar.MONTH, 7); 
     a.set(Calendar.YEAR, 2011); 
     a.set(Calendar.DAY_OF_MONTH, 16); 

     System.out.print(test.getDate(a)); 
    } 

    // What-date calculation 
    public static String getDate(Calendar date) { 
     //date = Calendar.getInstance(); 
     return date.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, 
       Locale.getDefault()); 
    } 

} 

當我運行這段代碼,它打印「星期二」。不過,我於2011年7月16日,運行這段代碼並取消

date = Calendar.getInstance(); 

使date將在2011年7月16日,和它打印正是「星期六」。

不知日曆對象a是正確傳遞,因爲a也被設置7月16日,2011年 是否有任何解決方案,我通過日曆對象,並正確打印的日期?

預先感謝

+0

什麼都可以過去,只要你有引用或值。 – bestsss

+0

@LxL請務必標記爲已接受爲您工作的答案 – Bozho

回答

3

,因爲它們是基於0不設置日曆的一個月的時候用「神奇」號(而不是1根據你承擔)。而是使用日曆常量,例如Calendar.JULY。

+0

確實(15chrs) – Bozho

+0

我明白了,謝謝。因爲我使用的是Android文檔,並沒有在月份問題中提到這個問題。 – LxL

+0

@LxL:無論您是使用Android或沒有是沒有實際意義,因爲無論你正在使用的java.util.Calendar,和這個類的API的文檔是很清楚的。 –

3

MONTH是從零開始。所以7月是8月。請參閱the docs。有Calendar.JULY爲您提供方便

+0

偉大的思想家一樣想! 1+ –

2

這很簡單 - 日曆不使用1-索引個月。你把它設置到8月16日。打印日曆對象的toString(),你會看到。日曆提供了可以使用的常量。

你可能要檢查出的DateTime約達庫,它可以讓您使用1個索引更容易解決了一些其他的日曆問題。

相關問題