Java 设置日历日期

Java 设置日历日期,java,calendar,Java,Calendar,好的,我要做的是设置日历实例的日期,然后返回年中的周。我是通过使用Calendar.set()函数来实现的 要获取lYear、lMonth和lDay值,我将通过以下步骤传递一个格式为04/26/2013的字符串: String[] arrDate = dateIn.split("/"); int lMonth = Integer.parseInt(arrDate[0]) - 1; Log.d("SaveHandler", "Month is: " + lMonth); int lDay = In

好的,我要做的是设置日历实例的日期,然后返回年中的周。我是通过使用Calendar.set()函数来实现的

要获取lYear、lMonth和lDay值,我将通过以下步骤传递一个格式为
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。

此代码是正确的,问题在于
formWIM.format(…)
,或者主板时钟的电池耗尽。

使用

formWIM.format(lc.getTime());
而不是

formWIM.format(lc.get(Calendar.WEEK_OF_YEAR));  
编辑
您可以解析日期(而不是
dateIn.split(
等)

然后格式化它

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

Calendar
上的
Calendar.MONTH
字段基于0,而不是1(正如我们习惯的那样)。可能是你的问题。不,我已经考虑过了,在我尝试设置它之前,我正在从中减去1。你必须使用Java类还是使用像Joda Time这样已经解决了所有这些问题的第三方库?什么是
formWIM
?你的问题可能是格式化。lc.get(Calendar.WEEK\u OF\u YEAR)的输出是什么?请显示
lYear
lMonth
lDay
值。是的,这已经解决了。非常感谢!
  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);