2014-09-29 96 views
0

我有一个字符串(例如10月15日星期三),那么我必须得到这一天的第二天。我有一种方法可以用来做到这一点,但在本月之后,它会抛出错误的日期。这里的方法:设置日历并添加1天

public String getNextDay(String lastDate) { 
    String[] wholedate = lastDate.split("\\s+"); 
    String datemon = wholedate[0]; 
    String date = wholedate[1]; 
    String dateday = wholedate[2]; 

    Calendar cal = Calendar.getInstance(); 
    cal.setFirstDayOfWeek(Calendar.SUNDAY); 
    SimpleDateFormat df = new SimpleDateFormat("MMM dd cccc"); 

    int dayNo=0; 
    if (dateday.equalsIgnoreCase("Sunday")) { 
     dayNo = Calendar.SUNDAY; 
    } else if (dateday.equalsIgnoreCase("Monday")) { 
     dayNo = Calendar.MONDAY; 
    } else if (dateday.equalsIgnoreCase("Tuesday")) { 
     dayNo = Calendar.TUESDAY; 
    } else if (dateday.equalsIgnoreCase("Wednesday")) { 
     dayNo = Calendar.WEDNESDAY; 
    } else if (dateday.equalsIgnoreCase("Thursday")) { 
     dayNo = Calendar.THURSDAY; 
    } else if (dateday.equalsIgnoreCase("Friday")) { 
     dayNo = Calendar.FRIDAY; 
    } else if (dateday.equalsIgnoreCase("Saturday")) { 
     dayNo = Calendar.SATURDAY; 
    } 

    int monNo = 0; 
    if (datemon.equalsIgnoreCase("Jan")) { 
     monNo = Calendar.JANUARY; 
    } else if (datemon.equalsIgnoreCase("Feb")) { 
     monNo = Calendar.FEBRUARY; 
    } else if (datemon.equalsIgnoreCase("Mar")) { 
     monNo = Calendar.MARCH; 
    } else if (datemon.equalsIgnoreCase("Apr")) { 
     monNo = Calendar.APRIL; 
    } else if (datemon.equalsIgnoreCase("May")) { 
     monNo = Calendar.MAY; 
    } else if (datemon.equalsIgnoreCase("Jun")) { 
     monNo = Calendar.JUNE; 
    } else if (datemon.equalsIgnoreCase("Jul")) { 
     monNo = Calendar.JULY; 
    } else if (datemon.equalsIgnoreCase("Aug")) { 
     monNo = Calendar.AUGUST; 
    } else if (datemon.equalsIgnoreCase("Sep")) { 
     monNo = Calendar.SEPTEMBER; 
    } else if (datemon.equalsIgnoreCase("Oct")) { 
     monNo = Calendar.OCTOBER; 
    } else if (datemon.equalsIgnoreCase("Nov")) { 
     monNo = Calendar.NOVEMBER; 
    } else if (datemon.equalsIgnoreCase("Dec")) { 
     monNo =Calendar.DECEMBER; 
    } 

    cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date)); 
    cal.set(Calendar.MONTH, monNo); 
    cal.set(Calendar.DAY_OF_WEEK, dayNo); 

    cal.add(Calendar.DATE, 1); 
    String fd = df.format(cal.getTime()); 

    return fd; 
} 

也许我设置日期错误或者我可能需要设置更多的日期,或者有更好的方法来做到这一点。非常感谢。

回答

0

如果我是你,我会做这样的

Calendar c = Calendar.getInstance(); 

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

SimpleDateFormat df = new SimpleDateFormat("EEEE dd-MMM-yyyy", Locale.ENGLISH); 

c.add(Calendar.DATE, 1); 

String nextDate = df.format(c.getTime()); 
+0

Whut?我需要的日期格式是“MMM dd cccc”,我有数据设置为日期。 – 2014-09-29 05:30:20

0

我简单的解决方法是调用Calendar.getTimeInMillis()来获取UTC时间戳,加24x60x60x1000毫秒到它,然后把它放到另一个日历。

此方法不需要其他额外的步骤。它应该没有错误,但效率可能有点差。但是,我把简单作为第一要务。

+0

请重新阅读此问题。谢谢 :) – 2014-09-29 05:31:13

0

我终于知道如何做到这一点,不设定星期几。出于某种原因,它会混淆日期。所以现在,我只设置day_of_month和month,并且我工作正常。感谢你们。