2013-04-26 136 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(...)或者您的主板时钟电池电量耗尽。

相关问题