2013-04-26 168 views
2

好吧,所以我想要做的就是設置日曆實例的日期設置,然後返回week_of_year。我使用Calendar.set()函數的設置日曆日期

public String weekInYearForm = "ww"; 
SimpleDateFormat formWIM = new SimpleDateFormat(weekInYearForm, Locale.US); 

Calendar lc = Calendar.getInstance(); 
    lc.set(Calendar.YEAR, lYear); 
    lc.set(Calendar.MONTH, lMonth); 
    lc.set(Calendar.DAY_OF_MONTH, lDay); 


    wiy = formWIM.format(lc.get(Calendar.WEEK_OF_YEAR)); 

這樣做要得到年權,lMonth,和L天的價值觀,我在格式04/26/2013傳遞字符串通過以下步驟:

String[] arrDate = dateIn.split("/"); 
int lMonth = Integer.parseInt(arrDate[0]) - 1; 
Log.d("SaveHandler", "Month is: " + lMonth); 
int lDay = Integer.parseInt(arrDate[1]); 
Log.d("SaveHandler", "Day is: " + lDay); 
int lYear = Integer.parseInt(arrDate[2]); 
Log.d("SaveHandler", "Year is: " + lYear); 

我面臨的問題是,當我看到什麼是輸出到wiy時,它總是1.經過一些進一步的調試,我意識到時間是在紀元時間,而不是設置爲我需要的值。

我也試過使用lc.set(lYear, lMonth, lDay),也無濟於事。如果有人有任何想法,我會非常感激他們。

*編輯:我早些時候做了一些調試,並且它返回了1970年的年份和0月份。

+1

「日曆」上的'Calendar.MONTH'字段是基於0的,而不是1(正如我們習慣的那樣)。也許有你的問題。 – 2013-04-26 22:36:38

+0

不,我曾經想過,在我嘗試設置之前就減去1。 – ubundude 2013-04-26 22:37:21

+0

您是否必須使用Java類或使用像Joda Time這樣已經解決了所有這些問題的第三方庫? – 2013-04-26 22:39:47

回答

3

使用

formWIM.format(lc.getTime()); 

,而不是

formWIM.format(lc.get(Calendar.WEEK_OF_YEAR)); 

編輯
您可以分析您的日期(而不是dateIn.split(等)

SimpleDateFormat monthDayYear = new SimpleDateFormat("MM/dd/yyyy", Locale.US); //04/26/2013 
    Date date = monthDayYear.parse("04/26/2013"); 

然後進行格式化它

SimpleDateFormat formWIM = new SimpleDateFormat("ww", Locale.US); 
formWIM.format(date); 
+0

是的,這已修復它。非常感謝! – ubundude 2013-04-26 22:53:47

0

此代碼正確的是,問題出在formWIM.format(...)或者您的主板時鐘電池電量耗盡。

相關問題