给定一个仅是一天的字符串,例如“ Thu”或“ Thursday”,我将如何获得java.util.Calendar对象,其中day String表示与今天最接近的String。换句话说,今天是星期一3/26/29012,因此,如果字符串为“ Thu”,我想形成一个代表“ 3/29/2012”的日期。如果传入的字符串是“ Mon”,而我们是星期一,那么我想知道今天的日期。在此示例中,“ 3/26/2012”。

我尝试了这个...

            final DateFormat formatter = new SimpleDateFormat("EEE");
            java.util.Date date = (Date) formatter.parse(dayOfWeekStr);
            final Calendar now = Calendar.getInstance();
            dateCal.set(Calendar.YEAR, now.get(Calendar.YEAR));
            dateCal.set(Calendar.MONTH, now.get(Calendar.MONTH));
            dateCal.setTime(date);


但它不起作用。确定日期后,年和月的结果为1970年1月。

最佳答案

你快到了。只需将.setTime(..)放在其余的上面。当前,您通过设置时间来覆盖YEAR和MONTH更改。

正如Kevin所指出的,它可能并非在所有情况下都有效。因此,我建议您使用另一种方法:基于解析的日期,从日历中仅获取DAY_OF_WEEK,并将其设置为now。当然,如果需要,您应该注意更改星期。

09-10 08:28
查看更多