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));

为了获取 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 月。

4

2 回答 2

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);
于 2013-04-26T22:44:52.560 回答
0

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

于 2013-04-26T22:44:08.183 回答