设置日历的日期

时间:2013-04-26 22:33:44

标签: java calendar

好的,我正在尝试做的是设置日历实例的日期,然后返回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));

要获取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);

我面临的问题是,当我看到什么是输出时,它始终是1.经过一些进一步的调试,我意识到时间是在大纪元时间,而不是设定我需要的值

我也尝试使用lc.set(lYear, lMonth, lDay),也无济于事。如果有人有任何想法,我将非常感谢他们。

*编辑:我之前做了一些调试,一年中回归1970年,本月回归0。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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